HTML 검사

HTML sanitization

데이터 삭제에서 HTML 삭제는 HTML 문서를 검토하여 "안전하다"고 지정되고 원하는 태그만 보존하는 새로운 HTML 문서를 생성하는 과정이다.HTML 삭제는 사용자가 제출한 HTML 코드를 모두 삭제하여 XSS(Cross-Site Scripting)와 같은 공격으로부터 보호하는 데 사용될 수 있다.

세부 사항

글꼴 변경을 위한 기본 태그는 다음과 같이 허용되는 경우가 많다.<b>,<i>,<u>,<em>그리고<strong>다음과 같은 고급 태그가 있는 동안<script>,<object>,<embed>그리고<link>소독 과정에 의해 제거된다.또한 다음과 같은 잠재적으로 위험한 특성onclick속성은 악성 코드가 주입되는 것을 방지하기 위해 제거된다.

소독은 일반적으로 화이트리스트 또는 블랙리스트 접근법을 사용하여 수행된다.안전한 HTML 요소를 화이트리스트에 남기는 것은 그렇게 심각하지 않다; 그것은 단순히 그 기능이 구매 후 포함되지 않는다는 것을 의미한다.반면에, 안전하지 않은 요소가 블랙리스트에서 제외되면, 취약성은 HTML 출력에서 제거되지 않을 것이다.따라서 HTML 표준에 새롭고 안전하지 않은 기능이 도입된 경우 오래된 블랙리스트는 위험할 수 있다.

대상 태그에 대해 수행할 작업을 지정하는 규칙에 따라 추가 검사를 수행할 수 있다.대표적인 작업으로는 내용을 보존하면서 태그 자체를 제거하거나 태그의 텍스트 내용만 보존하거나 속성에 특정 값을 강요하는 것이 있다.[1]

구현

PHP에서는, HTML 삭제가 를 이용하여 수행될 수 있다.strip_tags()닫히지 않은 기호 또는 각도 브래킷에 이어 모든 텍스트 내용을 제거할 위험에서 기능한다.[2]HTML Cureder Library는 PHP 애플리케이션에서 또 다른 인기 있는 옵션이다.[3]

Java(및 ).NET), OWASP Java HTML Sanitizer Project를 이용하여 소독을 할 수 있다.[4]

.NET에서는 많은 세정제가 HTML 파서인 HTML 민첩성 팩을 사용한다.[5][6][1]

자바스크립트에는 백엔드를 위한 "JS 전용" 세정제가 있으며, 브라우저의 DOM(Document Object Model) 파서를 사용하여 HTML을 구문 분석(성능 향상을 위해)하는 브라우저[7] 기반 구현이 있다.

참조

  1. ^ a b "HtmlRuleSanitizer". GitHub. 13 August 2021.
  2. ^ "strip_tags". PHP.NET.
  3. ^ "HTML Purifier - Filter your HTML the standards-compliant way!". htmlpurifier.org.
  4. ^ "OWASP Java HTML Sanitizer".
  5. ^ http://htmlagilitypack.codeplex.com/[데드링크]
  6. ^ "Whitelist santize with HtmlAgilityPack". 14 June 2011.
  7. ^ "JS HTML Sanitizer". GitHub. 14 October 2021.