졸업 연구를 통하여 PHP를 이용한 웹서버 프로젝트를 하였습니다. PHP 언어를 본격적으로 공부하였는데 조금씩 적어보려고 합니다.
HTTP 전송방식에서 데이터를 전송할 때 여러 가지 방식이 있지만 가장 기본적인 두 가지 방식 GET와 POST 방식을 사용할 수 있습니다. 두 가지 방식에 대하여 알아보는 시간을 가져보겠습니다.
GET
<?PHP
#index.php
$id = $_GET['key'];
$pw = $_GET['name'];
echo $id; //userid
echo $pw //1q2w3e4r
?>
GET 방식은 URL에 키와 값을 입력하여 데이터를 전송하는 방식입니다. URL의 "?" 뒤에서부터 쿼리스트링으로 데이터를 전달합니다. 예시에서는 로그인 정보를 적었는데 실제로 GET 방식을 사용하게 되면 URL이 다 노출되어 사용하면 안 됩니다. 또 다른 단점으로는 GET 방식 같은 경우에는 URL을 이용하여 글자 수 제한이 있습니다. 하지만 GET방식은 여러 번 데이터를 전송 하더라도 동일한 결과가 나옵니다. 보통 웹사이트 글 찾기등 데이터를 요청하는 경우에 사용하게 됩니다.
GET방식은 URL로 노출이 되기 때문에 캐시와 브라우저 기록에 남으며 북마크에 추가할수 있습니다.
POST
<?PHP
#login.php
$id = $_POST['key'];
$pw = $_POST['name'];
echo $id; //userid
echo $pw //1q2w3e4r
?>
POST 방식은 Http의 Body에 담아 데이터를 전송하는 방식입니다. URL에 직접 표시가 되는 것이 아니라 사용자에게 직접적으로 노출되지 않습니다. 그리고 POST 방식은 데이터를 제한 없이 보낼 수 있습니다. POST 방식은 데이터를 전송할때 결과가 다를 수 있습니다. POST 방식의 경우에는 데이터를 생성하기 때문에 글쓰기 등의 작업에서 사용합니다.
여담으로 POST 방식도 크롬 개발자 도구를 사용하면 다 나오기 때문에 암호화해야합니다.
두가지 방식 비교
GET | POST | |
캐시 | O | X |
브라우저 기록 | O | X |
북마크 추가 | O | X |
데이터 길이 제한 | O | X |
사용용도 | 데이터 요청 | 데이터 생성 |
데이터 전달 방식 | 쿼리스트링(URL) | HTTP Body |
멱등성 (idempotent) | O | X |
※ 멱등성은 연산을 여러 번 하더라도 결과가 달라지는 성질로 GET 방식에서는 여러번 전송하더라도 결과가 같지만 POST 방식은 다를 수 있습니다.
여담으로
<?php
$id = addslashes($_GET['key']);
$pw = addslashes($_GET['name']);
echo $id; //userid
echo $pw //1q2w3e4r
?>
여담으로 GET , POST 방식의 경우에는 SQL문을 직접 입력하여 공격할수 있습니다. 이것을 SQL 인젝션이라고 합니다. PHP에서는 addslashes()라는 함수를 이용하여 예방할 수 있습니다.
'컴퓨터 > PHP' 카테고리의 다른 글
PHP (4) - phpMyAdmin 설치하기 (0) | 2023.02.07 |
---|---|
PHP (3) - exec를 이용하여 파이썬을 연동하자 (0) | 2023.01.03 |
PHP (2) - PHP에서 MySQL을 다뤄보자 (0) | 2023.01.02 |