카테고리 없음

클라이언트 사이드 베이직 02

무무뭉? 2021. 8. 13. 13:04

:: XSS :: mitigations

XSS는 웹 서비스상에서 빈번하게 일어남. 

 

방어 포인트 : 

브라우저 단에서 방어하는 기술 뿐 아니라 서버 내부에 저장하는 시점 혹은 저장된 데이터를 출력하는 시점에서 입력 값을 올바르게 검증하는 방식으로 XSS를 방어해야 한다.

1. Server side Mitigations

2. HTTP only 플래그 사용

3. Content security policy 사용

4. X-XSS-Protection

 

:: XSS :: Mitigations :: Server side Mitigations

XSS를 유발할 수 있는 태그 삽입을 방지하는 기술. 사용자의 입력값이 HTML이 될 일이 없다면 꺽쇠나 따옴표와 같은 특수 문자를 HTML Entity Encoding을 이용해 태그로 인식되지 않도록 escape한다.

만약 사용자의 입력 값이 HTML 형태를 지원해야 한다면 화이트 필터링을 해야 한다.(화이트 필터링 : 입력해도 안전한 일부 태그, 속성을 제외한 모든 값을 필터링을 하는 것을 의미)

URI Query, Post Body, User-Agent, Referer와 같은 헤더도 모두 포함하여 필터링을 하는 것을 의미.

Mozilla에서 제작한 Bleach 라이브러리 https://github.com/mozilla/bleach

 

GitHub - mozilla/bleach: Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes

Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes - GitHub - mozilla/bleach: Bleach is an allowed-list-based HTML sanitizing library that escapes ...

github.com

 

과거 - 사용자가 로그인할때 세션에 IP주소를 함께 저장. 이후에는 로그인할 때마다 IP주소가 동일한지 검사.

현재 - 와이파이 때문에 로그인 국가가 변경되었는지 확인함.

 

:: XSS :: Mitigations :: HTTP Only FLAG

서버 측에서 응답 헤더에 SET-cookie헤더를 전송해 자바 스크립트에서 해당 쿠키에 접근 하는 것을 금지한다. 쿠키 생설할 때 옵션으로 설정 가능하며 XSS 취약점이 발생하더라도 공격자가 알아낼 수 없는 쿠키 값이기 때문에 세션 쿠키를 설정할 때에는 HTTP only flag를 적용하는 것을 권장.

 

:: XSS :: Mitigations :: CSP

CSP는 응답헤더나 meta 태그를 통해 사이트에서 로드하는 리소스들의 출처를 제한할 수 있다. ex) 모든 리소스의 출처가 현재 도메인 이거나, 특정 도메인일 경우에만 해당. script-src를 이용해 자바스크립트 코드의 출처를 제한할 수 있다.

script-src 'nonce-noncevalue13b739d8ea12' 를 이용하면 nonce 값을 알아야만 자바스크립트를 실행할 수 있도록 제한할 수 있다. 즉 서버에 매번 생성되는 nonce값을 모르면 일반적인 방법으로는 자바스크립트 실행 불가.

공격 포인트 :

신뢰할 출처를 선언하는 방식이므로 신뢰하는 CDN 서버가 해킹당하면 무용지물.

 

:: XSS :: Mitigations :: X-XSS-protection

웹 브라우저에 내장된 XSS Filter를 활성화할 것인지를 판단한다. XSS filter는 웹 브라우저에서 전송된 request 값이 XSS 공격 코드와 유사하고 Response에 해당 공격 코드가 포함되어 있을 경우 사용자에게 공격 발생을 알리고 차단한다. 요청값과 반환값을 비교해 판단하므로 Reflected XSS 공격을 막는데 적합한 방법이다. XSS filter는 강력한 방어 수단이지만 현재는 잘 사용하지 않는 추세.