Computer >> 컴퓨터 >  >> 문제 해결 >> Windows 오류

Chrome 'ERR_BLOCKED_BY_XSS_AUDITOR' 오류 원인 및 해결 방법

Chrome은 새로운 기능 추가와 보안 강화를 위해 끊임없이 개발이 진행되며, 수시로 새로운 버전이 출시됩니다. Chrome은 단순히 웹 페이지를 탐색하는 용도뿐만 아니라, 개발자들이 구축하는 다양한 웹 서비스에서도 폭넓게 활용되고 있습니다.

Chrome  ERR_BLOCKED_BY_XSS_AUDITOR  오류 원인 및 해결 방법

최근 Chrome 57 빌드에서는 XSS 감사기(XSS Auditor)의 탐지 기능이 대폭 향상되었습니다. 이에 따라 새로운 보안 지침이 적용되면서 일부 웹 서비스가 정상적으로 작동하지 않고 'ERR_BLOCKED_BY_XSS_AUDITOR' 오류 메시지를 표시하기 시작했습니다.

이 오류는 HTML 콘텐츠가 POST 방식으로 요청 본문에 담겨 전송될 때 발생합니다. Google Chrome에는 양식(form)을 통해 제출되는 HTML을 상시 분석하여 위험한 요청을 차단하는 XSS 보안 기능이 내장되어 있으며, 이를 통해 악성 요청의 전송을 막고 XSS 공격을 예방합니다.

Chrome에서 'ERR_BLOCKED_BY_XSS_AUDITOR' 오류가 발생하는 원인

앞서 언급했듯이 최신 Chrome 빌드에서는 XSS 취약점이 악용되지 않도록 XSS 감사기가 크게 개선되었습니다. 따라서 소스 코드를 이에 맞게 업데이트하지 않았다면 해당 오류 메시지가 나타날 수 있습니다.

대부분의 경우 브라우저가 '교차 사이트 스크립팅(XSS)' 공격이 시도되었다고 오판하는 오탐(false positive)입니다. 이러한 공격은 주로 브라우저가 웹사이트의 화면 표시와 무관한 JavaScript나 HTML을 렌더링하도록 속임당할 때 발생합니다.

해결 방법 1: 웹사이트 관리자인 경우

웹사이트 관리자라면 정상적인 사용 환경에서 이 오류가 발생할 때, POST 헤더에 특정 페이지 헤더를 추가하여 문제를 해결해 볼 수 있습니다. 다만 이는 어디까지나 임시적인 조치이며, 추후에는 XSS 감사기의 요청을 올바르게 처리하는 근본적인 대안을 반드시 마련해야 합니다.

PHP

PHP 파일에 다음 헤더를 추가합니다:

header('X-XSS-Protection:0');

ASP.NET

아래 코드는 소스 코드에 적절한 핸들러를 추가하기 전까지 XSS 보호 기능을 임시로 비활성화하는 방법입니다.

HttpContext.Response.AddHeader("X-XSS-Protection","0");

Web.Config 파일을 직접 설정하는 경우에는 아래 코드를 대신 사용할 수 있습니다:

<system.webServer>

<httpProtocol>

<customHeaders>

<add name="X-XSS-Protection" value="0" />

</customHeaders>

[...]

ASP.NET 서버 요청 유효성 검사

경우에 따라 필수 헤더를 추가했음에도 서버가 POST 요청을 계속 거부할 수 있습니다. 이때는 '안전하지 않은(unsafe)' 데이터 요청을 처리하기 위해 특별히 만들어진 객체인 'Request.Unvalidated'를 활용하는 것도 좋은 우회 방법입니다.

var code = Request.Unvalidated.Form["code"];

이 방법은 ASP.NET 요청 유효성 검사(Request Validation)에서만 작동할 가능성이 높습니다.

웹 폼(Web Forms)을 사용 중이라면 다음과 같이 설정할 수 있습니다:

<@ Page validateRequest="false" %>

MVC를 사용한다면 컨트롤러에 '[ValidateInput(false)]' 특성(Attribute)을 적용하여 유효성 검사를 비활성화할 수 있습니다.

[ValidateInput(false)]
public ActionResult Convert(CodeRequest request)
{ ... }

IIS HttpRuntime 설정

IIS Express는 Visual Studio에서 웹 서비스를 실행할 때 사용되는 대표적인 아키텍처입니다. ASP.NET을 사용할 때 IIS가 ASP.NET에 제어권이 넘어가기도 전에 요청을 차단하는 경우가 있습니다. web.config 파일에서 이 기능을 끄고 다음 코드를 추가하면 이전 방식의 동작으로 되돌릴 수 있습니다:

<httpRuntime requestValidationMode="2.0"/>

이 설정을 적용하지 않으면 IIS가 요청을 ASP.NET에 전달하기 전에 실패하며 요청을 거부하게 됩니다.

참고: 위 우회 방법들은 웹사이트 접근이 불가능하여 실질적인 손실이 발생하고 있는 상황에서는 유용합니다. 그러나 근본적으로는 반드시 소스 코드를 수정하여 XSS 감사기를 올바르게 처리하도록 개선해야 합니다. 이러한 임시 방편은 적절한 해결책을 마련할 때까지만 사용하세요.

해결 방법 2: 웹사이트 관리자가 아닌 경우

일반 사용자이고 웹사이트에 대한 관리 권한이 없다면, XSS 감사기를 비활성화한 상태로 Chrome을 실행해 볼 수 있습니다. 바탕 화면에 Chrome 바로 가기를 생성한 후 필요한 플래그를 추가하여 실행하는 방식입니다.

  1. 바탕 화면의 빈 공간에서 마우스 오른쪽 버튼을 클릭하고 새로 만들기 > 바로 가기를 선택합니다.
  2. 컴퓨터에 설치된 Google Chrome 버전(비트 수)에 맞는 아래 명령어를 붙여넣습니다.

64비트 Chrome의 경우

"C:\Program Files\Google\Chrome\Application\chrome.exe" -disable-xss-auditor

32비트 Chrome의 경우

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -disable-xss-auditor
Chrome  ERR_BLOCKED_BY_XSS_AUDITOR  오류 원인 및 해결 방법
  1. 바로 가기가 생성되면 해당 바로 가기를 통해 Chrome을 실행하고, 문제가 되던 웹사이트에 접속하여 오류 메시지가 해결되었는지 확인합니다.

참고: 이 방법은 브라우저 보안 체계의 핵심 요소인 XSS 감사기를 비활성화하는 것입니다. 발생할 수 있는 모든 위험은 사용자 본인의 책임이며, 이 기능은 임시로만 사용하는 것이 좋습니다.