HTML 정수기를 사용하여 사용자 입력을 위생적으로 처리하고 있습니다. 허용 된 요소 목록이 구성되어 있습니다. 즉, 허용 목록에없는 모든 태그가 제거됩니다. 아래 코드 :HTML 정수기 - 스트립 대신 허용되지 않는 태그를 이스케이프 처리합니다.
require_once "HTMLPurifier.standalone.php";
$config = HTMLPurifier_Config::createDefault();
$config->set('HTML.AllowedElements', array('strong','b','em','i'));
$purifier = new HTMLPurifier($config);
$safe_html = $purifier->purify($dirty_html));
보다는 단지 그 내용을 유지, 나는이 목록에 포함되지 않은 요소를 싶습니다 탈출과 텍스트로 다시 확인할 수 있습니다.
는, 상기 다음 입력 문자열을 나타내는 화이트리스트 주어진 설명하기 :
<a href="javascript:alert('XSS')"><strong>CLAIM YOUR PRIZE</strong></a>
가 "<strong>CLAIM YOUR PRIZE</strong>"
변신, a
가 화이트리스트되어 있지 않기 때문에. 유사하게,
<b>Check the article <a href="http://example.com/">here</a></b>
은 "<b>Check the article here</b>"
이된다. 정규 표현식 기반 "해킹"에 의지하지 않고 HTML 정수기의 구성 을 조정하여 순수
<a href="javascript:alert('XSS')"><strong>CLAIM YOUR PRIZE</strong></a>
<b>Check the article <a href="http://example.com/">here</a></b>
:
a를 다음으로 위의 두 가지 예를 설정하는 방법이 있나요? 있다면, 어떻게 완료되었는지 알고 싶습니다.