크로스 사이트 스크립팅이란
변조를 사용하여 웹 브라우저에서 악성 스크립트를 실행시키는
공격 기법을 크로스 사이트 스크립팅(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> & " ' ' < ></h1>";
echo $text;
echo htmlspecialchars($text);
?>
</pre>
구체적으로 다섯 개의 특수문자를 HTML 공통 문자 엔티티로 변경합니다.
문자 | 변경 내용 |
& | & |
" | " |
' | ', ' |
< | < |
> | > |
반응형
'PHP > PHP7 예비학교' 카테고리의 다른 글
GET과 POST 차이 (0) | 2020.09.27 |
---|---|
[PHP] 발견된 위치부터 문자열 출력 - stristr(), mb_stristr() (0) | 2020.09.13 |
[PHP] 문자열이 포함되어 있는 개수 확인 - substr_count(), mb_substr_count() (0) | 2020.09.13 |
[PHP] 문자열 검색 - strpos(), mb_strpos() (0) | 2020.09.13 |
[PHP] 문자열 비교하기 - ===, strcmp(), strcasecmp(), strncmp() (0) | 2020.09.13 |