2013-05-30 2 views
1

PHP를 사용하여 웹 사이트에서 XSS 공격을 막으려합니다.Htmlentities 또는 htmlspecialchars 또는 stripslashes?

기본적으로이 공격을 막을 수있는 3 가지 기능이 있지만 어떤 것을 사용해야하는지 잘 모르겠습니다. 이전에 다른 질문을 본 적이 있지만이 질문에 대한 명확한 답을 얻지 못했습니다.

어느 것을 사용해야합니까? 그 중 어느 것이 가장 좋으며 그 이유는 무엇입니까?

+1

어떤 질문 :

이 기능을 사용하는 방법은이 같은 것입니다 당신은 보았습니까? 답은 어떻게 명확하지 않았습니까? – Jon

+0

아니요. 더 나은 옵션이 있습니다. [** htmlpurifier **] (http://www.htmlpurifier.org) – itachi

+0

@itachi : 기록을 위해, 나는 매우 열등한 선택이라고 생각합니다. – Jon

답변

0

아무도 이 (가) 공격을 막을 수는 없습니다. 손상을 제한 할 수 있습니다!

그러나 모두를 사용하거나 하나만 사용하는 것은 문제가되지 않습니다. 이는 응용 프로그램 디자인과 결과가 데이터베이스 수준으로 내려갈 수 있도록 요청을 수정할 수 있는지 여부입니다.

this을 참조하십시오. 아마도 이것은 XSS 공격의 복잡성에 대한 아이디어를 줄 것입니다.

+0

이것은 단순히 사실이 아닙니다. – Jon

+0

요청 값 (POST/GET)을 위생적으로 처리하여 악의적 인 데이터가 없으면 이미 공격을하고 있으므로 공격을 막지는 않았지만 공격 자체 만 처리합니다. –

+0

당신은 * sanitize * 아무것도, 대신 표시하기 전에 입력을 제대로 이스케이프 *하지 않습니다. 어쨌든 "예방"이라는 정의를 사용하면 세계에서 "예방할 수있는"공격이 없습니다. 어떻게 그 정의가 유용할지 모르겠습니다. – Jon

2

반드시 htmlspecialchars 또는 를 htmlentities 태그 사이에 신뢰할 수없는 데이터를 출력하는 경우 보호 할 수 있지만, 출력은 자바 스크립트 이벤트 핸들러에있는 경우 보호되지 않습니다. ...

echo htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); 

는 OWASP XSS 방지 컨닝 페이퍼를 살펴 보자

https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

http://code.google.com/edu/security/index.html#videos

관련 문제