본문 바로가기

old/Cyber Security

http에서 데이터 전달하는 두가지 방법: GET, POST

반응형

목적

Http 프로토콜에서 데이터를 보내는 방법은 두가지. GET과 POST를 사용한다.

장단점과 차이점을 알아보자.

HTTP Request 구성요소

[Scheme]://[Host]:[Port][Path]?[Query]#[Fragment]

[Header]

HTTP URI 구성요소 예제

http://www.example.com:1030/software?id=test#section-4

scheme Host  Port  Path  Query  Fragment
http ://www.example.com :1030 /software ?id=test #section-4

GET으로 데이터 보내기

HTTP URI에서 쿼리 부분에 파라미터를 선언하여 데이터를 넣어 보내는 방식이다.

GET 예제

http://www.example.com?id=test

장점

  • URI에 포함되므로 캐시가 되어 북마크, 뒤로가기 등등이 가능
  • POST보다 빠름
  • 파라미터값이 보임→내용 추측 가능

단점

  • URI의 글자수 제한
  • 파라미터값이 보임→내용 추측 가능→보안성이 낮다

GET으로 보낸 데이터 받는 PHP코드

<?php
$data = $_GET['a'];
echo "$data";
?>

POST로 데이터 보내기

HTTP Request에서 헤더부분에 파라미터를 선언하여 데이터를 넣어 보내는 방식이다.

GET 예제

$name=Han이 보내는 피라미터와 데이터이다.

POST /login HTTP/1.1
Host: www.example.com
Content-Length: 255
Cache-Control: max-age=242342
Upgrade-Insecure-Requests: 134423423
Origin: <http://www.example.com>
Content-Type: application/x-www-form-urlencoded

$name=Han

장점

  • 길이 제한 없음
  • 파라미터값이 보이지 않음→보안성이 높음

단점

  • 캐시되지 않음, 북마크, 뒤로가기 등등이 불가능

POST으로 보낸 데이터 받는 PHP코드

<?php
data = $_POST['a'];
echo "$data";
?>
반응형