IEO Menu
InfoLogin
:: 전체게시물:: HTML 특수문자C/C++JavascriptIT/TIP개발/TIP개발/리눅스관리OSX/Windows잡담/잡동사니라이딩일기자가정비/튜닝유머사진 모음
$_GET, $_POST, $_REQUEST 에 대하여
Read: 7308
2016-08-30 16:30:50
처음 PHP를 공부할때 $_POST, $_GET, $_REQUEST 그 목적에 맞게 사용한다 라고 공부했다.

그러나 실전에서는 $_REQUEST 만 사용한다.

혹자는 $_REQUEST 만 사용하여 보안성을 떨어트린다, 위험하다. 제정신인가? 라고 말하기도 한다.

그럼 되묻는다. "해킹할때 GET 만 사용하고 POST는 사용하지 않는가?

천만에 다 사용한다. 즉 $_POST, $_GET 은 사실 의미가 없다.

어떤걸 사용해도 의미가 없다.

인터넷으로 넘어오는 정보들은 100% 믿을수 없는 정보다.

데이터가 GET으로 넘어올땐 데이터를 가공하고 POST로 넘어올땐 데이터를 가공하지 않아도 되는건가?

천만에 GET/POST 가릴것 없이 데이터는 무조건 가공해야 한다.

파일을 보더라도, 이미지의 경우에도, 내부 GD 라이브러리를 이용하여 가공된 파일을 사용하는 것이 바람직하다. 원본 그대로 사용했다가 좃되면 안된다고~
인터넷으로 주고 받는 데이터는 무조건 가공한후 사용한다.
숫자면 숫자형태로, 문자면 문자열 검수를.. 숫자로 와야하는 데이터가 문자로 왔다면 당연히 숫자형태로 강제변환후 0값을 가지게 될것이다.

GET/POST 가리지 않고 데이터를 모두 가공후 사용한다면 GET/POST 를 구분하는게 의미가 있는 일인가? 결단코 없다.

애당초 어떤 형태로 데이터가 넘어 오든 데이터를 믿는 것 자체가 문제다 GET으로 넘어 왔으니 위험하고 POST로 넘어 왔으니 안전한 데이터 따위는 없다.

어떤 형태로 넘어와도 데이터는 가공해야 한다. 해커는 어떤 형태로든 데이터를 보내는데, "난 POST를 체크하고 있으니 안전해~" 이딴 마인드를 가진 사람들이 더러 있다. ㅋ

그러나 제한을 걸기 위해 일부러 POST상태를 체크한다면 모를까? 데이터 유효성을 위해서 POST상태를 체크한다면 그건 정말 바보 같은 생각이다.
코드의 호환성/안전도.
어떤 코드들은 GET/POST를 가리지 말아야 하는 경우가 있다. 재사용 함수/클래스의 경우에는 더더욱 이 문제가 크다.

여기서 POST로 검증하고 여기서 GET으로 받아야 하고.. 집어쳐라. 데이터의 유효성보다 그게 더 중요하다면 게임오버다.

모든 데이터를 검수하는 것은 작은 규모에서는 그리 큰 문제는 없지만. 대형사이트의 경우에는 리소스 사용문제가 두드러질것이다.

그러나.. 데이터를 검수하는 쪽이 GET/POST 구분을 통한 검수보다 훨씬 더 안전하다. 리소스를 차지 한다고 하더라도 그게 더 절대적으로 안전하다.
웹 보안의 기초는 GET/POST 을 구분하여 지키는 것이 아니라. 데이터 검수로 지키는 것이다.
GET/POST 구분은 사실상 더 많은 데이터를 보낼수 있느냐 없느냐의 스펙일뿐, 보안을 위한 스펙이 아니다.

초보자들이 오해하는 것이 바로 그것이다. 주소 표시줄에 아무것도 안나타난다고 그것이 보안성이 좋은게 아니다. 그렇게 POST 더 뛰어나다고 생각하면 아예 홈페이지를 POST로만 움직이게 만들지 그러냐? ㅋㅋ

이건 우클릭을 할 수 없게 만들었다고 보안성이 더 높다고 생각하는 착각과 같은 것이다. 요즘 브라우저 굳이 우클릭없어도, 내가 원하는 이미지 동영상 다 추출가능하다.

데이터를 받아 쓰는데는 GET/POST 구분할 필요가 없다. 그냥 REQUEST 로 받아 데이터를 쓰면 된다.

단 모든 데이터는 검수후에 사용하는것을 전재로 한다. 데이터검수가 없으면 GET/POST 구분하는건 의미가 없다. 보안에 어떤 도움도 되지 않는다.
GET/POST 는 어떻게 쓰나?
함수가 GET 상태 일때는 동작하지 않다가 POST상태 일때만 동작을 가정한다고 보자, 이것은 같은 함수를 출력과, 입력에 같이 사용 할 경우다.

출력에서는 입력코드가 동작하지 말아야 하고, 입력의 경우 출력코드가 동작하지 말아야 하는 특수한 경우가 있다.

웹에서 폼데이터가 만약 GET으로 넘겨온다면, 입력을 중단하고, 출력으로 판정해야 한다.

반대의 경우 입력으로 판정하는 것이다.

그런 특수한 경우의 판단을 돕기 위해 사용하는 것이지, 그걸 POST를 보안규격이라고 생각하면 곤란하다.
개발/TIP
CSS 말줄임
text-overflow:ellipsis; white-space:nowrap; word-wrap:normal; overflow:hidden; display:-webkit-b ... more
2016-07-29 16:02:41
PHP ===, !== 비교연산자. 무엇에 쓰는 물건인고?
$a=1; $b="1"; if($a==$b){echo '1, == 동일<br>';} // 출력 if($a===$b){ ... more
2016-07-27 09:24:12
Tinymce File Uploader / 위지윅 에디터에 파일업로더 만들어 붙이기.
2016-07-21 16:23:38
일부 영역/iframe 확대/축소, Zoom 처리
2016-07-18 13:12:19
결국 PHP 소스 관리툴을 만들었다. Tiny 프로젝트라도 하나할까?
2016-07-07 15:42:50
HTML 특수문자
특수문자가 필요한 이유는 여러가지가 있지만. DB를 위한 인코딩 목적으로 ... more
2016-07-05 11:31:47
네임서버(DNS) 주소 목록
KT olleh (올레; 구 QOOK(쿡)) 기본 DNS 서버 주소 - 168.126.63.1 보조 DNS 서버 주소 ... more
2016-07-05 09:04:43
Input file css (style), Input 파일 버튼 스타일 시트
2016-07-01 10:03:31
HTML 테이블을 배열로 "HTML Table to Array" for PHP
function HTMLTable2Array($file) { if(!is_file($file)){return array();} // DOM 기반 HTML 처 ... more
2016-06-30 16:20:06
$_GET, $_POST, $_REQUEST 에 대하여
처음 PHP를 공부할때 $_POST, $_GET, $_REQUEST 그 목적에 맞게 사용한다 라고 공 ... more
2016-06-30 09:02:33
토쳐라이딩 | IEO.KR
IEO.KR의 사전 서면동의 없이 IEO.KR 사이트의 일체의 정보, 콘덴츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.