2018년 4월 21일 토요일

게시판 스크립트 방지 관련

포폴로 제출한 홈페이지를 잠깐 들어가봤는데 내가 설정하지 않은 alert창이 떠서 당황하였다.
인사담당자님께서 테스트하신 것같았는데 글 제목들은 공백이었고 내가 입력한적이 없는 alert창이 자꾸 발생하였다. 
어디서 자꾸 발생하나 개발자도구로 보니.....글 제목을 스크립트로 입력하신거였다...

<script>alert('Popup');</script>

전혀 생각하진 못한 문제였다...ㅠㅠㅠ

글 내용부분은 네이버 스마트에디터를 사용해서 스크립트가 방지되는 것같았다. 
글 제목엔 <script>alert('Popup');</script>을 써서 저장하면 해당게시판의 페이지에 접속할 때마다 알람이 발생한다!!! 


* XXS(Cross-site Scripting란?
SQL injection과 함께 웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 악의적인 사용자가 공격하려는 사이트에 스크립트를 넣는 기법을 말한다. 공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 보통 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다.

크로스 사이트 스크립팅이란 이름 답게, 자바스크립트를 사용하여 공격하는 경우가 많다. 공격 방법이 단순하고 가장 기초적이지만, 많은 웹사이트들이 XSS에 대한 방어 조치를 해두지 않아 공격을 받는 경우가 많다. 여러 사용자가 접근 가능한 게시판 등에 코드를 삽입하는 경우도 많으며, 경우에 따라서는 메일과 같은 매체를 통해서도 전파된다. 

물론, HTML을 사용하는 것이기 때문에, Text-Only 게시판이나, BBCode를 이용하는 위키위키 등에서는 XSS가 발생할 일은 없다. 단, 나무위키의 경우 {{{#!html HTML}}} 을 이용해서 HTML 태그를 사용할 수 있으므로 취약점이 있을 수도 있다. 그래서 나무위키 초반에는 스크립트 태그와 이벤트 속성도 막지 않았다. 물론, 이는 후에 대부분 수정되었다.

주로 CSRF를 하기 위해서 사용되기 때문에 종종 CSRF와 혼동되는 경우가 있으나, XSS는 자바스크립트를 실행시키는 것이고, CSRF는 특정한 행동을 시키는 것이므로 다르다.




해결방법은 좀 더 찾아보고 적용해야할 듯...ㅠㅠ 


http://forest71.tistory.com/16 (게시판 스크립트 방지관련 글)

https://blog.naver.com/powerlee12/40051367646 (xss에 대해서)

https://namu.wiki/w/XSS

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
lucy xss servlet filter를 적용 테스트 중 ...