본문 바로가기
Web Security/SecureCoding

크로스 사이트 스크립트

by KkingKkang 2022. 11. 11.

웹 페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도하여 공격

 

- 사용자가 입력한 문자열에서 <, >, &, "," 등을 replace등의 문자 변환 함수나 메소드를 사용하여 &lt, &gt, &amp, &quot로 치환

- 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("<","&lt;");
      	name = name.replaceAll(">","&gt;");
        name = name.replaceAll("&","&amp;");
       	name = name.replaceAll("\"","&quot;");
    } 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/

 

 

반응형

'Web Security > SecureCoding' 카테고리의 다른 글

크로스사이트 요청 위조  (0) 2022.11.16
신뢰 되지 않는 URL 주소로 자동 접속 연결  (0) 2022.11.15
위험한 형식 파일 업로드  (0) 2022.11.15
자원 삽입  (0) 2022.11.11
SQL 삽입  (0) 2022.11.11

댓글