loading

프로그래밍/JavaScript

XSS(Cross Site Scripting) Filter 크로스사이트스크립팅 방지처리

침착곰 2021. 9. 1. 21:23
반응형

안녕하세요.

이번 포스팅에서는 XSS Filter에 대해서 알아보겠습니다!

 

XSS란?

원래라면 Cross Site Scripting의 약자로 Cross로 시작하여 CSS가 맞지만 HTML의 css와 겹쳐서 XSS라고 정의한 해킹 기법입니다. XSS 처리를 하지 않으면 간단한 방법을 통해 사이트를 조작할 수 있습니다.

 

예를 들어 아래처럼 게시판에 글을 쓸 때 스크립트처리를 하면 게시판의 해당 글이 열릴 때 "XSS 테스트" 알람메시지가 실행이 되게 됩니다. 이를 방지하기 위해 XSS Filter처리를 하게됩니다.

 

XSS Filter처리

public static String xssFilter(String str) {
	String result = "";
	
	result = str;
	result = result.replaceAll("[<]", "&lt;");
	result = result.replaceAll("[>]", "&gt;");
	
	return result;
}

위와 같이 "<"의 경우 "&lt;" replace를 ">"를 "&gt;" 이렇게 수정하여 XSS Filter처리를 할 수 있습니다.

 

public static String xssDecoding(String str) {
	String result = "";
	
	result = str;
	result = result.replaceAll("&lt;", "[<]");
	result = result.replaceAll("&gt;", "[>]");
	
	return result;
}

반대로 XSS를 Decoding하려면 replace를 반대로 해주면 됩니다.

 

클라이언트에서 서버로 요청을 하는 경우에는 XSS Filter처리를 하고, 서버에서 처리하거나 클라이언트의 요청을 응답할 때 XSS Decoding을 사용하여 치환을 해줍니다.

 

위의 코드는 "<", ">" 두가지만 있지만 위험한 문자열의 경우 보통 아래와 같이 XSS Filter처리를 해줍니다.   

 문자  인코딩 된 문자
 &  &amp;
 <  &lt;
 >  &gt;
 '  &#x27;
 "  &quot;
 ( &#40;
 ) &#41;
 /  &#x2F;

 

이상 XSS Filter에 대해서 알아봤습니다.

반응형
그리드형