본문 바로가기

PHP/PHP7 예비학교

크로스 사이트 스크립팅 - XSS 대책

크로스 사이트 스크립팅이란



변조를 사용하여 웹 브라우저에서 악성 스크립트를 실행시키는

공격 기법을 크로스 사이트 스크립팅(Cross Site Scripting) 즉, XSS이라 합니다.


 

 

조금 더 쉽게 얘기하자면 GET 또는 POST 이용하여  '<script>alert('!!')</script>' 다음과 같은 텍스트를 댓글에 입력하게 되면 해당를 게시물을 조회할 때 마다 '!!'이라는 경고창이 나오게 됩니다.

즉, HTML 코드에 사용하는 문자를 그대로 표시하며 웹 브라우저의 레이아웃을 무너지게 만듭니다.

 

XSS 대책 - htmlspecialchars()



웹 브라우저에 표시하기 전에 'htmlspecialchars()' 사용하여 악성 문자를 처리하면 됩니다.


 

htmlspecialchars ( string $string [, int $flags= ENT_COMPAT | ENT_HTML401 [, string $encoding= ini_get ( "default_charset") [, bool $double_encode=TRUE ]]]) : string

 

매개 변수 설명 디폴트
$string 변환할 문자열 X
$flags 따옴표 등 문자열 처리 방법 ENT_COMPAT | ENT_HTML401
$encoding 문자를 변환할 인코딩 defaulg_chartset (php.ini 설정 값)
$double_encoding HTML 엔티티 인코딩 true

 

  • 일반적인 사용법
<pre>
<?php
$text = "<h1>   &amp;	&quot;  &#039;  &apos;  &lt;    &gt;</h1>";

echo $text;
echo htmlspecialchars($text);
?>
</pre>

 

출력

 

구체적으로 다섯 개의 특수문자를 HTML 공통 문자 엔티티로 변경합니다.

문자 변경 내용
& &amp;
" &quot;
' &#039;, &apos;
< &lt;
> &gt;

 

반응형