26.10.2015 Views

Modern PHP - 맛보기 PDF

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

유용한 게시물입니다!<br />

<br />

window.location.href ='http://example.com';<br />

이 댓글의 위험을 제거하지 않으면 악의적인 코드가 데이터베이스에 주입되고 웹 사이트 마크<br />

업으로 출력될 수 있다. 웹 사이트 방문자가 이 댓글이 있는 페이지에 들어가면 유해한 웹 사이<br />

트로 이동하게 된다. 이런 불상사는 자신의 통제 범위 밖에 있는 입력 데이터의 위험을 왜 제거<br />

해야만 하는지 알려주는 단편적인 예시다. 내 경험상 가장 자주 접하는 입력 데이터는 HTML,<br />

SQL 쿼리, 사용자 정보(예: 이메일 주소, 전화번호)다.<br />

HTML<br />

HTML 특수문자(예: &, >, &#x2033;)는 htmlentities() 함수(http://php.net/manual/func<br />

tion.htmlentities.php)를 이용해서 각각에 해당하는 HTML 엔티티로 교체한다(예제 5-1 ).<br />

이 함수는 대상 문자열에 있는 모든 HTML 문자를 예외 처리하고 애플리케이션 저장소 계층에<br />

안전한 문자열로 변환한다.<br />

하지만 htmlentities ( ) 함수는 우둔하다. HTML 입력을 검증하지 않으며 기본적으로<br />

홑따옴표를 예외 처리하지 않는다. 입력 문자열의 문자 집합을 검출하지도 못한다. html<br />

entities() 함수를 사용하는 올바른 방법이 [예제 5-1]에 있다. 첫 번째 인수는 입력 문자열<br />

이다. 두 번째 인수는 ENT_QUOTES 상수며 홑따옴표를 인코딩하도록 지시한다. 세 번째 인수로<br />

는 입력 문자열의 문자 집합을 명시한다.<br />

예제 5-1 htmlentities( ) 함수로 입력 위험 제거하기<br />

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

Saved successfully!

Ooh no, something went wrong!