Web Development/SI 프로젝트
JSP XSS방지
_dear
2024. 9. 9. 16:17
문제점
게시판의 게시글 제목에 <script></script> 태그를 사용하여 스크립트 작성 시, 실행되는 문제점이 발생
-> 악용가능성 있으므로 변경
UI SW를 사용하는 경우엔 소프트웨어에서 처리하는 로직이 되어있지만, JSP의 경우 따로 처리해주어야 한다.
마찬가지로, 게시글 내용의 경우 에디터를 사용하고 있기때문에 별도의 처리를 할 필요가 없었다.
해결방법
1. 등록 시, 게시글 제목 값을 가지고 와서 <, >, &, \“ 값을 특수문자 처리 해주기.
var pstTtlStr= $(“#pstTtl”).val();
pstTtlStr= pstTtlStr.replaceAll(“<“,”<”);
pstTtlStr= pstTtlStr.replaceAll(“>“,”>”);
pstTtlStr= pstTtlStr.replaceAll(“&“,”&”);
pstTtlStr= pstTtlStr.replaceAll(“\”“,”"”);
$(“#pstTtl”).val(pstTtlStr);
2. 조회 시, 다시 변환하여 출력.
$.ajax({
type:”POST”,
url: control url작성,
data: input data 작성,
success: function(result){
var pstTtlStr = getNullStr(result.pstTtl);
pstTtlStr = pstTtlStr.replace(/"/g,”\””);
pstTtlStr = pstTtlStr.replace(/&/g,”&”);
pstTtlStr = pstTtlStr.replace(/>/g,”>”);
pstTtlStr = pstTtlStr.replace(/</g,”<”);
$(“opbPstTtl”).text(pstTtlStr);
…
}
});
- replaceAll을 지원하지 않아, 모든 문자열을 변경하기위해 정규표현식 사용
- /문자열/g 로 해당 모든 문자열을 변경가능