Reflected XSS

반사형 XSS

설명

요청 파라미터를 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 값에는 각 출력 컨텍스트에 맞는 별도의 보호가 필요합니다.

참조