웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하여 공격
- 사용자가 입력한 문자열에서 <, >, &, "," 등을 replace등의 문자 변환 함수나 메소드를 사용하여 <, >, &, "로 치환
- HTML 태그를 허용하는 게시판에서는 게시판에서 지원하는 HTML 태그의 리스트(White List)를 선정한 후, 해당 태그만 허용하는 방식 적용
- 보안성이 검증되어 있는 API를 사용하여 위험한 문자열 제거
예제 1
안전하지 않은 코드 ▼
<% String name = request.getParameter("name"); %>
<p>Name : <%=name%></p>
외부로 받은 name을 그대로 출력하므로 안전하지 않다.
안전한 코드 ▼ replaceAll 사용
<%
String name = request.getParameter("name");
if(name != null) {
name = name.replaceAll("<","<");
name = name.replaceAll(">",">");
name = name.replaceAll("&","&");
name = name.replaceAll("\"",""");
} else {
return;
}
%>
<p>Name : <%=name%> </p>
안전한 코드 ▼ 보안 API 사용
<%
String name = request.getParameter("name");
String safeName = ESAPI.encoder().encodeForHTMLAttribute(name);
%>
<p>Name : <%=safeName%> </p>
OWASP에서 제공하는 보안 API를 사용하고 있다. 이 보안 API를 사용하면 특수문자를 이용한 공격 스크립트와 같은 외부 입력 문자열을 이용한 공격을 효과적으로 차단할 수 있다. https://owasp.org/www-project-enterprise-security-api/
반응형
'△ > SecureCoding' 카테고리의 다른 글
크로스사이트 요청 위조 (0) | 2022.11.16 |
---|---|
신뢰 되지 않는 URL 주소로 자동 접속 연결 (0) | 2022.11.15 |
위험한 형식 파일 업로드 (0) | 2022.11.15 |
자원 삽입 (0) | 2022.11.11 |
SQL 삽입 (0) | 2022.11.11 |
댓글