Chrome이 이 페이지에서 비정상적인 코드를 감지했으며 개인정보(예: 비밀번호, 전화번호, 신용카드) 보호를 위해 차단했습니다. 조치하는 방법
크롬, 사파리, 오페라 브라우저에서 다음과 비슷한 메시지가 출력될수 있다.
이 페이지에서 비정상적인 코드를 감지했으며 개인정보(예: 비밀번호, 전화번호, 신용카드) 보호를 위해 차단했습니다
The XSS Auditor blocked access to '~~~~~~~~~~' because the source code of a script was found within the request. The server sent an 'X-XSS-Protection' header requesting this behavior.
XSS공격을 브라우저단에서 막기때문인데
정상적인 페이지 일지라도 위와같은 메시지가 출력될수 있다.
Apple WebKit계열 브라우저에서 X-XSS-Protection헤더에 따른 처리를 활성화 할수 있다.
참고로 Blink는 웹킷엔진 기반으로 발전된 웹브라우저 렌더링 엔진이다.
* 동일한 계열의 엔진을 사용한 브라우저중에 마이크로소프트의 엣지만 영향이 없었다.
개발사 |
브라우저 | X-XSS-Protection | 웹엔진 |
Chrome | 해당 | Blink(Webkit) | |
Apple | Safari | 해당 | Webkit |
Microsoft | Edge | 영향없음 | Blink(Webkit) |
Opera Software | Opera | 해당 | Blink(Webkit) |
다음과 같이 웹브라우저에 내장된 XSS AUDITOR에의해 HTML 렌더링이 중단되고 경고메시지가 출력된다.
* 오페라 브라우저에서의 XSS 차단 메시지
* 크롬브라우저에서의 차단 메시지
* 사파리 브라우저에서의 렌더링 중지현상 ( 맥OS )
* Response Header 값 확인 (X-XSS-Protection)
* 첫번째 대응방법
Java의 다음과 같이 헤더값을 변경하여 준다.
response.setHeader("X-XSS-Protection","0");
* 테스트결과 현재 이방법으로는 대응이 되지 않았다. 두번째 대응방법을 사용해야 한다.
* 두번째 대응방법
document.write()의 경우 XSS의 문제를 일으킬수 있으므로
obj.innerHTML로 변경한다.
- 수정전 코드 샘플
document.write(vHtmlCode);
- 수정후 조치된 코드 샘플
var baseObj = document.getElementById(“baseObj”)
baseObj.innerHTML = vHtmlCode;
이 방법으로 시도하니 조치가 가능했다.
레거시 코드에서
동일한 문제로 많은사람들이 삽질하지 않았으면 하는 마음으로 공유드립니다.
모든게 그렇지만
알면 상식이고 모르면 기적이다. ^^