2010-09-20 5 views
9

XSS에 대한 첫 번째 방어선으로 정규식을 가졌습니다.XSS에 대한 첫 번째 방어선 인 Regex

실제로는 Kohana 2.3입니다.

이것은 공용 입력 텍스트 (HTML이 없음)에서 실행되며이 테스트에 실패하면 입력을 거부합니다. 텍스트는 항상 htmlspecialchars() (또는 더 구체적으로는 Kohana's flavour으로 표시되며, 다른 것들 사이에서 문자 집합을 추가합니다). 나는 또한 출력에 strip_tags()을 넣었다.

클라이언트가 괄호가있는 텍스트를 입력하려고 할 때 문제가 발생했습니다. 도우미를 수정하거나 연장하는 방법에 대해 생각해 보았지만 이중 따옴표를 허용하면 실제로 유효성을 검사해야하는 이유가 있습니까?

출력에서 ​​이스케이프에만 의존 할 수 있습니까?

답변

5

위험한 XSS 공격을 필터링하기 위해 Regexes에 의존하는 것은 결코 안전하지 않습니다. 그리고 비록 당신이 그들에게 의지하지 않는다해도, 출력 이스케이프와 입력 필터링은 올바르게 사용될 때, 모든 종류의 공격을 죽일 것입니다. 따라서 Regexes가 도움이 필요하지 않을 때 "첫 번째 방어선"으로 간주 할 필요가 없습니다. 귀하와 귀하의 고객이 발견 한대로 그들은 이와 같이 사용할 때만 복잡합니다.

길게만 짧게 : html_entities 또는 htmlspecialchars을 사용하여 출력물을 이스케이프하면 정규식이 필요하지 않으며 strip_tags도 필요하지 않습니다.

관련 문제