Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> ข้อผิดพลาด Windows

แก้ไข: ERR_BLOCKED_BY_XSS_AUDITOR

Chrome พัฒนาอย่างต่อเนื่อง มีรุ่นใหม่เผยแพร่เป็นครั้งคราวเพื่อเพิ่มฟีเจอร์และปรับปรุงความปลอดภัย Chrome ไม่ได้ใช้แค่ブラウジング แต่ยังใช้สำหรับบริการเว็บหลายอย่างที่นักพัฒนานำไปใช้

แก้ไข: ERR_BLOCKED_BY_XSS_AUDITOR

ใน Chrome 57 build ใหม่ XSS auditor detection ปรับปรุงมาก มีหลักเกณฑ์ใหม่ ทำให้บริการเว็บหยุดทำงานและแสดงข้อความข้อผิดพลาด 'ERR_BLOCKED_BY_XSS_AUDITOR'

ข้อความข้อผิดพลาดนี้เกิดเมื่อส่งเนื้อหา HTML ผ่านวิธี POST ภายในคำขอ Google Chrome มีฟีเจอร์ความปลอดภัย XSS ที่วิเคราะห์ HTML ที่ส่งผ่านฟอร์มเสมอ และบล็อกคำขอเหล่านั้น ทำให้ฟอร์มไม่ถูกส่งผ่าน และหลีกเลี่ยงการโจมตี XSS

สาเหตุของข้อความข้อผิดพลาด 'ERR_BLOCKED_BY_XSS_AUDITOR' ใน Chrome

เช่นที่กล่าวมา build ใหม่ ของ Chrome ปรับปรุง XSS Auditor ใหม่ทั้งหมด เพื่อป้องกันการใช้ประโยชน์จากช่องโหว่ XSS ด้วยเหตุนี้ คุณอาจได้รับข้อความข้อผิดพลาดหากยังไม่ได้อัปเดตซอร์สโค้ดตามนั้น

ส่วนใหญ่เป็น false positive เมื่อเบราว์เซอร์เชื่อว่ามีการบังคับโจมตี 'cross-site scripting' โจมตีเหล่านี้เกิดหลักเมื่อเบราว์เซอร์ถูกหลอกให้เรนเดอร์ JavaScript หรือ HTML ที่ไม่ใช่ส่วนของการแสดงผลเว็บไซต์

วิธีแก้ (หากคุณดูแลเว็บไซต์)

หากคุณเป็นผู้ดูแลเว็บไซต์ และข้อผิดพลาดนี้เกิดขึ้นขณะใช้งานปกติ คุณสามารถลองแก้ไขโดยเพิ่มส่วนหัวหน้าเว็บ (page headers) เข้าไปใน POST headers นี่เป็นวิธีแกชั่วคราวจนกว่าจะมีทางเลือกที่เหมาะสมซึ่งจัดการคำขอ XSS Auditor ได้อย่างถูกต้อง

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 Server Request Validation

ในบางกรณี เซิร์ฟเวอร์จะปฏิเสธคำขอ POST แม้เราจะเพิ่มส่วนหัวที่ต้องการแล้ว วิธีแก้อีกอย่างคือใช้ 'Request.Unvalidated' ซึ่งเป็นออบเจกต์สร้างขึ้นเฉพาะเพื่อจัดการการรับข้อมูลคำขอ 'unsafe'

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

นี่อาจทำงานได้เฉพาะ ASP.NET Request Validation เท่านั้น

หากใช้ web forms ให้ใช้:

<@ Page validateRequest="false" %>

หากใช้ MVC ให้ใช้ '[ValidateInput(false)]' ซึ่งเป็นแอตทริบิวต์บนคอนโทรลเลอร์ เพื่อป้องกันการตรวจสอบ

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

IIS HttpRuntime Settings

IIS Express ใช้โดย Visual Studio สำหรับบริการเว็บ และเป็นสถาปัตยกรรมที่ใช้กันมากที่สุด เมื่อใช้ ASP.NET IIS อาจบล็อกคำขอของคุณก่อนที่ ASP.NET จะได้ควบคุม เราจะลองปิดสิ่งนี้ใน web.config และพยายามได้พฤติกรรมเดิมด้วยโค้ดต่อไปนี้:

<httpRuntime requestValidationMode="2.0"/>

หากไม่ทำเช่นนี้ IIS จะล้มเหลวและปฏิเสธคำขอก่อนที่จะส่งต่อให้ ASP.NET

หมายเหตุ: วิธีแก้ชั่วคราวเหล่านี้เหมาะสมหากเว็บไซต์เข้าถึงไม่ได้และก่อให้เกิดความสูญเสีย คุณควร เสมอ ปรับปรุงซอร์สโค้ดเพื่อจัดการ XSS Auditor ได้อย่างถูกต้อง ใช้วิธีเหล่านี้ชั่วคราวเท่านั้นจนกว่าจะแก้ไขได้อย่างถูกต้อง

วิธีแก้ (หากคุณไม่ได้ดูแลเว็บไซต์)

หากคุณเป็นผู้ใช้ทั่วไป ไม่มีสิทธิ์เข้าถึงหรือดูแลเว็บไซต์ คุณสามารถลองเปิด Chrome โดยไม่มี XSS Auditor เราจะสร้าง Shortcut ของ Google Chrome และเพิ่มแฟล็กที่จำเป็นเพื่อเปิดในเงื่อนไขของเรา

  1. คลิกขวาที่เดสก์ท็อป ใดๆ เลือก New > Shortcut
  2. วางโค้ดต่อไปนี้ตามรุ่น Google Chrome ที่ติดตั้งบนคอมพิวเตอร์

สำหรับ Chrome 64-bit

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

สำหรับ Chrome 32-bit

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -disable-xss-auditor
แก้ไข: ERR_BLOCKED_BY_XSS_AUDITOR
  1. Shortcut Chrome ของคุณจะถูกสร้าง ตอนนี้ลองเข้าถึงเว็บไซต์ และตรวจสอบว่าข้อความข้อผิดพลาดแก้ไขได้หรือไม่

หมายเหตุ: วิธีนี้ปิด XSS Auditor บนเบราว์เซอร์ซึ่งเป็นส่วนสำคัญของกลไกความปลอดภัย โปรดดำเนินการด้วยความเสี่ยงของตัวเอง และแนะนำให้ใช้ฟีเจอร์นี้ชั่วคราวเท่านั้น