IEO Menu
InfoLogin
:: 전체게시물:: HTML 특수문자C/C++JavascriptIT/TIP개발/TIP개발/리눅스관리OSX/Windows잡담/잡동사니라이딩일기자가정비/튜닝유머사진 모음
$_GET, $_POST, $_REQUEST 에 대하여
Read: 7328
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를 보안규격이라고 생각하면 곤란하다.
엔진오일을 규정이상 사용하지 말아야하는 이유.
2016-11-23 10:22:17
아이들링 불안정 및 RPM 이 치솟는 현상 해결 방법.
2~3만km 를 타면 배터리 충방전이 원활하지 못하게 된다. 미라쥬 기준으로 4 ... more
2016-10-16 16:23:45
[PHP] 배열에서 isset 사용시 오류 해결방법
isset 은 배열 요소 또는 변수의 값이 null 이면 isset 으로 배열요소나 변수의 ... more
2016-09-22 11:56:00
[자바스크립트] 상위개체(FORM) 찾기
<script> function getParentForm(obj) { switch(obj.parentNode.tagName) { case ' ... more
2016-09-08 12:47:51
알리익스프레스 뭐야 이거 무서워 ㅋㅋㅋㅋㅋ
2016-09-06 11:19:32
[리눅스 명령어] find / 파일 찾기
서버에서 작업하다보면 문서내 특정 부분들을 찾아야할 때가 있다. 주로 ... more
2016-09-06 09:58:14
자바스크립트 / parseInt 대체함수 intval
자바스크립트의 parseInt 는 숫자가 아닌 값을 NaN 값이나 Infinity 값을 넘겨주 ... more
2016-08-30 16:32:09
JQuery (File/Image) 파일/이미지 입력(File Input) 체크
언제부터인가 브라우저에서 직접 파일 경로를 숨기면서 파일 컨트롤이 어 ... more
2016-08-24 11:09:01
Vertical-align 의 사용법
2016-08-16 08:44:32
풀프레임노이즈 비교.
2016-08-13 11:00:32
토쳐라이딩 | IEO.KR
IEO.KR의 사전 서면동의 없이 IEO.KR 사이트의 일체의 정보, 콘덴츠 및 UI등을 상업적 목적으로 전재, 전송, 스크래핑 등 무단 사용할 수 없습니다.