_dear 2024. 9. 9. 16:17


문제점
게시판의 게시글 제목에 <script></script> 태그를 사용하여 스크립트 작성 시, 실행되는 문제점이 발생
-> 악용가능성 있으므로 변경

UI SW를 사용하는 경우엔 소프트웨어에서 처리하는 로직이 되어있지만, JSP의 경우 따로 처리해주어야 한다.
마찬가지로, 게시글 내용의 경우 에디터를 사용하고 있기때문에 별도의 처리를 할 필요가 없었다.

 



해결방법
1. 등록 시, 게시글 제목 값을 가지고 와서 <, >, &, \“ 값을 특수문자 처리 해주기.

var pstTtlStr= $(“#pstTtl”).val();

pstTtlStr= pstTtlStr.replaceAll(“<“,”&lt;”);
pstTtlStr= pstTtlStr.replaceAll(“>“,”&gt;”);
pstTtlStr= pstTtlStr.replaceAll(“&“,”&amp;”);
pstTtlStr= pstTtlStr.replaceAll(“\”“,”&quot;”);

$(“#pstTtl”).val(pstTtlStr);



2. 조회 시, 다시 변환하여 출력.

$.ajax({
    type:”POST”,
    url: control url작성,
    data: input data 작성,
    success: function(result){
        var pstTtlStr = getNullStr(result.pstTtl);
        pstTtlStr = pstTtlStr.replace(/&quot;/g,”\””);
        pstTtlStr = pstTtlStr.replace(/&amp;/g,”&”);
        pstTtlStr = pstTtlStr.replace(/&gt;/g,”>”);
        pstTtlStr = pstTtlStr.replace(/&lt;/g,”<”);
        
        $(“opbPstTtl”).text(pstTtlStr);
        …
    }
});


- replaceAll을 지원하지 않아, 모든 문자열을 변경하기위해 정규표현식 사용
- /문자열/g 로 해당 모든 문자열을 변경가능