XSS(Cross Site Scripting)

2023. 5. 31. 17:59개발자료/Security


반응형

웹 상에서 가장 기초적인 취약점 공격 방법의 일종으로, 공격하려는 사이트에 스크립트를 넣는 기법을 말한다.
공격에 성공하면 사이트에 접속한 사용자는 삽입된 코드를 실행하게 되며, 의도치 않은 행동을 수행시키거나 쿠키나 세션 토큰 등의 민감한 정보를 탈취한다.

조치가이드

외부 입력값 또는 출력값에 스크립트가 삽입되지 못하도록 문자열을 치환한다.
아래는 XSS 공경에서 자주 사용되는 HTML 특수문자이다.

HTML 특수문자 HTML Entity HTML 특수문자 HTML Entity
< &lt; > &gt;
& &amp;    
" &quot; ' &#x27;

 

OWASP XSS 공격방지 7개명
  • 허용된 위치가 아닌 곳에 신뢰할 수 없는 데이터가 들어가는것을 허용하지 않는다.
  • 신뢰할수 없는 데이터는 검증해라.
  • HTML 속성에 신뢰할수 없는 데이터가 들어갈수 없도록 해라.
  • 자바스크립트에 신뢰할수 없는 값이 들어갈수 없도록 해라.
  • CSS의 모든 신뢰할 수 없는 값은 검증을 해라.
  • URL파라미터에 신뢰할 수 없는 값이 있는지 검증해라.
  • HTML 코드를 전체적으로 한번 더 검증해라

 

조치 - 문자열 치환
// PHP
$strParam = htmlspecialchars($_GET['Param']);
echo $strParam;
// Java
public static String convertHtmlSpecialChars(String source) {
	StringBuilder sb = new StringBuilder();
	for (int i = 0; i < source.length(); i++) {
		char c = source.charAt(i);
		switch (c) {
			case '<':
				sb.append("&lt;");
				break;
			case '>':
				sb.append("&gt;");
				break;
			case '&':
				sb.append("&amp;");
				break;
			case '"':
				sb.append("&quot;");
				break;
			case '\'':
				sb.append("&apos;");
				break;
			default:
				sb.append(c);
		}
	}
	return sb.toString();
}

strParam = convertHtmlSpecialChars(request.getParameter("Param"));

 

조치 - Apache 에서 제공하는 StringEscapeUtils Class 사용
// JAVA
import org.apache.common.lang3.StringEscapeUtils;

String strParam = request.getParameter("Param");
strParam = StringEscapeUtils.escapeHtml4(strParam);

 

조치 - Naver 에서 제공하는 Lucy-XSS 사용

Github : https://github.com/naver/lucy-xss-filter

 

GitHub - naver/lucy-xss-filter

Contribute to naver/lucy-xss-filter development by creating an account on GitHub.

github.com

가이드 : https://naver.github.io/lucy-xss-filter/kr/

 

Lucy XSS Filter

XSS 공격이 가능한 HTML 요소를 신뢰할 수 있는 코드로 변환하거나 삭제하는 기능을 제공한다. 공격이 가능하지 않은 HTML 요소는 허용을 한다. 4.1. 설정 파일 Lucy-XSS Filter의 필터링 규칙은 화이트리

naver.github.io

 

 

 

반응형

'개발자료 > Security' 카테고리의 다른 글

모바일 딥링크 취약점  (0) 2023.08.10
KISA - JavaScript 시큐어코딩 가이드  (0) 2023.06.01
파일다운로드 취약점 - Path Traversal  (0) 2023.05.31
MITMProxy - OSX  (0) 2020.01.29