Textarea 에 글을쓸때 개행문자가 있을시 데이터베이스에는 평문으로 들어간다. 혹은 띄어쓰기가 들어간채로.

이문제로 인해 저장시 \r\n 은 <br> 태그로 치환하였다. 여기 까진 좋았다. 그러나 XSS 가 문제 였다. 개행문자를 제외하고는 당연히 치환을 해주지 않으니.

 

<script>alert('나 되니?');</script>

 

아주 당연하게도 경고창을 뽐내주신다. 그래서 VIEW 단에서 jstl 의 out 태그로 뽑아봤다. 데이터베이스에 저장되어있는 문자 그대로 뽑아준다. 한번 필터링 해주고 뽑아주나보다..결국은 서버단에서 보안에 문제가 되는 태그는 모두 치환해주어야 하나보다.. 임시로 "<" 문자는 "&lt" 로 치환해주게끔 하였다. ( >는 나중에 해야할듯 )

 

네이버 xss 필터 프로젝트 http://dev.naver.com/projects/lucy-xss/

 

도움되는 글은 https://developer.salesforce.com/page/Secure_Coding_Cross_Site_Scripting 이다

 

이 기사에서는 아래 태그들은 필히 필터링 하기를 권하고 있다.

<applet>

<body>

<embed>

<frame>

<script>

<frameset>

<html>

<iframe>

<img>

<style>

<layer>

<link>

<ilayer>

<meta>

<object>