# XSS

XSS는 Cross-site Scripting의 약자인데 웹사이트 공격방법 중 기초적인 것에 해당된다.

XSS공격은 웹사이트에 스크립트 코드를 주입시키는 방법인데

html코드를 해석하지 않게 만들면 간단히 방어할 수 있다.


높은 이해를 위해 예시를 들어보자.

XSS 보안에 취약한 게시판이 있다고 보자.


게시판에 글을 등록을 할 때 다음과 같이 스크립트 코드를 집어 넣어 보았다.



이제 게시판에 다시 들어가 보면



자바스크립트 코드가 실행된 것을 볼 수 있다.

이러한 자바스크립트 코드를 실행을 막으려면

EL 밖에 <c:out value=' '/>태그를 씌워서

 자바스크립트 태그가 실행되지 않게 만들고

 글자 그대로 출력되게 하면 된다.



<c:out value='${값}'/>에는 디폴트로 escapeXml옵션이 true로 되어있어

출력 문자열에 HTML 특수문자(예: <, >, &, ' 또는 ") 포함되어 있을 경우

HTML을 해석하지 않고 그대로 출력되도록 해준다.

혹시나 <c:out value=' ${값}' escapeXml = false />로 입력하면

HTML 코드를 그대로 해석해서 내보내주기 때문에 주의할 필요가 있다.


XSS보안을 방어한 게시판은 다음과 같이

자바스크립트 코드가 그대로 출력되어 나온다.



예시를 위해 단순한 alert창을 띄었지만

쿠키에 들어있는 개인정보를 전송하거나

엉뚱한 곳으로 접속하게 만드는 등

악성코드가 심어져 있다면

문제를 일으킬 수 있다.

그러나 이 방법은 워낙 기초적인 거라 대부분 웹사이트들이 막았기에 걱정하지 않아도 된다.



To be continued.........




Made by 꿩

'IT > 보안' 카테고리의 다른 글

[방화벽] 인바운드 & 아웃바운드  (0) 2022.01.31
[Spring] Google reCAPTCHA v3  (6) 2019.07.07
OAuth  (0) 2019.06.17
SSL인증서  (0) 2019.03.21
CSRF  (0) 2018.12.25

+ Recent posts