26.10.2015 Views

Modern PHP - 맛보기 PDF

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

조시 록하트 저 | 정병렬 역 | 한빛미디어 | 2015년 10월 | 22,000원

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.1 위험 제거, 유효성 검사, 예외 처리<br />

TV 드라마 《엑스 파일 The X-Files 》의 남자 주인공 멀더는 “아무도 믿지 말라”는 말을 종종 하곤했<br />

다. 프로그램 세계에서도 자신이 직접 통제하는 출처로부터 나온 데이터가 아니라면 그 어떤<br />

데이터도 절대 믿으면 안 된다. 다음과 같은 몇몇 외부 출처들이 있다.<br />

● $_GET<br />

● $_POST<br />

● $_REQUEST<br />

● $_COOKIE<br />

● $argv<br />

● php://stdin<br />

● php://input<br />

● file_get_contents()<br />

● 원격 데이터베이스<br />

● 원격 API<br />

● 고객의 데이터<br />

이 모든 외부 데이터 출처는 여러분의 스크립트로 악의적인 데이터를 주입할 수 있는(고의든<br />

우연이든) 잠재적 침입 경로다. 사용자 입력을 받고 결과를 출력하는 스크립트는 쉽게 작성할<br />

수 있다. 하지만 그러한 일을 안전하게 수행하는 스크립트를 작성하기 위해서는 고민이 약간<br />

더 필요하다. 가장 단순하게 충고한다! 입력값의 위험을 제거하고 데이터의 유효성을 검사하고<br />

출력을 예외 처리하라.<br />

5.1.1 입력값 위험 제거<br />

입력값(예: 앞선 목록에 있는 출처로부터 나온 데이터)의 위험을 제거하면 안전하지 않은 문<br />

자가 예외 처리되거나 제거된다. 입력 데이터가 애플리케이션 저장소 계층(예: 레디스 Redis 나<br />

MySQL)에 도달하기 전에 위험을 제거하는 것이 중요하다. 이것이 첫 번째 방어선이다. 예를<br />

들어 여러분의 웹 사이트 댓글란에 HTML이 허용된다고 가정해보자. 기본적으로 방문자가 다<br />

음과 같은 악성 태그를 댓글 내용에 포함시키는 것을 막을 방법이 없다.<br />

52 2부 모범 사례

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!