설명
요청 파라미터를 HTML 응답에 그대로 출력하면 브라우저에서 공격자 스크립트가 실행될 수 있습니다.
잠재적 영향
세션 탈취, 피싱, 임의 요청 수행, 사용자 데이터 노출이 가능합니다.
해결 방법
HTML 텍스트와 따옴표로 감싼 일반 속성값에는 htmlspecialchars 또는 htmlentities를 사용합니다. JavaScript, CSS, URL 값에는 각 출력 컨텍스트에 맞는 별도의 보호가 필요합니다.
예시
변경 전
php
<?php
$html .= '<pre>Hello ' . $_GET['name'] . '</pre>';
변경 후
php
<?php
$name = htmlspecialchars($_GET['name'], ENT_QUOTES, 'UTF-8');
$html .= '<pre>Hello ' . $name . '</pre>';
설명:
- 변경 전: 요청 입력이 출력 인코딩 없이 HTML 응답에 기록됩니다.
- 변경 후: HTML 텍스트와 따옴표로 감싼 일반 속성값에는
htmlspecialchars또는htmlentities를 사용합니다. JavaScript, CSS, URL 값에는 각 출력 컨텍스트에 맞는 별도의 보호가 필요합니다.