SMALL
안녕하세요, 코린이의 코딩 학습기 채니 입니다.
개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.
만일 사용자가 아래와 같은 내용을 작성하고 등록한다면,
아래와 같이 style 태그가 적용되어 color가 red로 변경 되어 있는 것을 확인할 수 있습니다.
script 태그도 마찬가지로 script 태그로 받아들여서 alert가 실행되는 것을 확인할 수 있습니다.
이를 방지하기 위해 escaping 처리를 해줘야 합니다.
XSS 공격대비 (Cross-site Scripting)
Controller
MemberViewServlet
// XSS 공격대비 (Cross-site Scripting)
board.setContent(HelloMvcUtils.escapeXml(board.getContent()));
board.setTitle(HelloMvcUtils.escapeXml(board.getTitle()));
HelloMvcUtils
escapeXml()
public static String escapeXml(String str) {
return str.replaceAll("&", "&").replaceAll("<", "<").replaceAll(">", ">");
}
escaping 처리를 했기 때문에 문자 그대로의 "<", ">"로 받아들여서 더이상 style태그 혹은 script태그가 적용되지 않는 것을 확인할 수 있습니다.
boardList.jsp
<tr>
<td><%= board.getNo() %></td>
<td>
<a href="<%= request.getContextPath()%>/board/boardView?no=<%=board.getNo() %>"><%= HelloMvcUtils.escapeXml(board.getTitle()) %></a>
</td>
<td><%= board.getWriter() %></td>
<td><%= new SimpleDateFormat("yyyy-MM-dd HH:mm").format(board.getRegDate()) %></td>
<td>
<% if(boardExt.getAttachCount() > 0) { %>
<img src="<%=request.getContextPath() %>/images/file.png" alt="" width="16px"/>
<% } %>
</td>
<td><%= board.getReadCount() %></td>
</tr>
게시글 목록 페이지에서도 escaping 처리!
LIST
'Java > Servlet & JSP' 카테고리의 다른 글
JSP) 파일 다운로드 (0) | 2022.07.04 |
---|---|
JSP) 조회수 증가 처리 (0) | 2022.07.04 |
JSP) 게시글 상세보기 - 게시글 수정/삭제 권한에 따라 버튼 노출하기 (0) | 2022.07.03 |
JSP) 첨부파일이 포함된 게시글 등록 - 첨부파일 처리 (0) | 2022.07.03 |
JSP) 첨부파일 있는 게시글 표시 (0) | 2022.07.02 |