ไทย

เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์ · HTML บรรณาธิการ WYSIWYG

การฆ่าเชื้อที่แปะแล้ว HTML: สิ่งที่ต้องกำจัดก่อนที่จะถึง CMS หรืออีเมลของคุณ

· มันทำงานอย่างไร

html ความปลอดภัย การล้างข้อความ

โครงสร้างข้อความที่อนุญาตผ่านประตูในขณะที่รูปแบบสคริปต์และลิงก์ที่ไม่ปลอดภัยถูกปฏิเสธ
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

อธิบายว่า HTML sanitiser ทำอะไรได้บ้าง ตั้งแต่แท็กและแอตทริบิวต์ที่อนุญาต ไปจนถึงสคริปต์ที่ถูกลบและ URL ที่ถูกทำให้เป็นกลาง และวิธีที่การตรวจสอบมาร์กอัปทำให้การเขียนกฎของ sanitiser เป็นอันดับแรกง่ายขึ้น

ตัวอย่างข้อมูลที่วางซึ่งมี onclick เปิดขึ้นโดยมีความเสี่ยงที่ซ่อนอยู่ในการป้อนข้อความแบบ Rich-Text

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

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

เหตุใดรายการที่อนุญาตจึงเอาชนะรายการบล็อก — อธิบายว่าการตั้งชื่อสิ่งที่ได้รับอนุญาตนั้นปลอดภัยกว่าการพยายามแสดงรายการโครงสร้างที่เป็นอันตรายทุกรายการ

รายการที่อนุญาตเริ่มต้นด้วยการตั้งชื่อโครงสร้างที่ได้รับอนุญาต ได้แก่ ย่อหน้า ส่วนหัว องค์ประกอบอินไลน์ความหมาย รายการ รายการคำอธิบาย เครื่องหมายคำพูด องค์ประกอบที่คล้ายโค้ด และจุดยึด กระดาษห่อธรรมดาที่ไม่รู้จักจะสูญเสียแท็กในขณะที่ยังคงข้อความไว้ คอนเทนเนอร์ที่เป็นอันตราย เช่น สคริปต์, สไตล์, iframe, แบบฟอร์ม, SVG หรือ MathML จะสูญเสียเนื้อหาไปด้วย

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

แท็ก คุณลักษณะ และรูปแบบ URL — ครอบคลุมตัวกรองน้ำยาฆ่าเชื้อสามชั้น โดยมีการตัดสินใจโดยทั่วไปสำหรับแต่ละรายการ

การกรองเกิดขึ้นที่สามชั้น องค์ประกอบเป็นตัวกำหนดคำศัพท์เชิงโครงสร้าง คุณลักษณะต่อองค์ประกอบอนุญาตให้ใช้ค่าได้เพียงไม่กี่ค่า เช่น ลิงก์ href และชื่อ การอ้างอิงคำพูด ชื่อย่อ และการเริ่มต้นและประเภทของรายการเรียงลำดับ การตรวจสอบ URL จากนั้นถอดรหัสเอนทิตี ตัดส่วนควบคุมและช่องว่างออกจากโพรบ และตรวจสอบโครงร่างผลลัพธ์

รูปแบบที่ยอมรับ ได้แก่ http, https, mailto, tel และ ftp รวมถึงรูปแบบที่เกี่ยวข้องโดยไม่มีรูปแบบที่ชัดเจน JavaScript, ข้อมูล, ไฟล์, blob, vbscript และเกี่ยวกับตัวอย่างถูกปฏิเสธในการทดสอบ ลิงก์ที่รอดมาจะได้รับค่า rel แต่การเพิ่มนั้นไม่สามารถทดแทนนโยบายปลายทางหรือการตรวจสอบลิงก์ได้

สไตล์: เพิกถอน อนุญาต หรือเขียนใหม่ — กล่าวถึงการจัดการสไตล์แบบอินไลน์ และเหตุใดระบบจำนวนมากจึงเลิกใช้รูปแบบนี้โดยสิ้นเชิง

คุณลักษณะสไตล์จะถูกลบออกขายส่ง โมดูลไม่พยายามแยกวิเคราะห์การประกาศ รักษาชุดย่อยที่ปลอดภัย หรือเขียนโทเค็นการออกแบบใหม่ นโยบายดังกล่าวจะลบลักษณะที่ปรากฏที่คัดลอกไว้และคำขอตาม CSS จะแสดงพร้อมกัน คุณลักษณะของคลาส รหัส และข้อมูลก็หายไป ทำให้สามารถพกพาได้แต่มีเจตนาให้มาร์กอัปแสดงออกน้อยลง

ระบบที่มีความต้องการรูปแบบที่แท้จริงจำเป็นต้องมีนโยบายที่ได้รับการตรวจสอบที่แตกต่างออกไป การเพิ่มสไตล์ให้กับรายการที่อนุญาตนี้โดยไม่มีน้ำยาฆ่าเชื้อ CSS จะเปลี่ยนรูปแบบการรักษาความปลอดภัยอย่างมาก การใช้งานปัจจุบันหลีกเลี่ยงปัญหานั้นแทนที่จะอ้างว่าสามารถแก้ไขความปลอดภัย CSS สำหรับชิ้นส่วนที่ไม่เป็นมิตรตามอำเภอใจ

ตัวอย่างการทำงาน: รับกฎจากรายการที่อนุญาตของ ToolAcre ไม่ใช่โปรแกรมเฉพาะของ Word

เริ่มต้นด้วย `<div class="WordSection"><p style="color:red" onclick="x()">Notice <strong>today</strong></p></div>` div ไม่ได้ถูกห่อไว้ คลาสและสไตล์ไม่สามารถคงอยู่ได้ onclick จะถูกลบออก และย่อหน้าบวกองค์ประกอบที่แข็งแกร่งยังคงอยู่ ผลลัพธ์เป็นไปตามนโยบายทั่วไปโดยไม่ต้องยืนยันว่าแอปพลิเคชันใดที่สร้าง wrapper

เพิ่ม javascript href และบล็อกสคริปต์ สมอเก็บคำที่มองเห็นได้ แต่สูญเสีย href; สคริปต์และเนื้อหาหายไป อ่านเหตุผลที่รายงาน แบบฝึกหัดนี้ช่วยกำหนดนโยบายเซิร์ฟเวอร์ แต่การคัดลอกชุดย่อยที่แน่นอนของ ToolAcre แบบสุ่มสี่สุ่มห้าอาจละเว้นองค์ประกอบที่แอปพลิเคชันของคุณต้องการหรืออนุญาต URL ที่โมเดลภัยคุกคามของคุณห้าม

การฆ่าเชื้อฝั่งเซิร์ฟเวอร์เทียบกับฝั่งไคลเอ็นต์ — อธิบายว่าทำไมเซิร์ฟเวอร์จึงต้องฆ่าเชื้อแม้ว่าเบราว์เซอร์จะทำไปแล้วก็ตาม

การกรองไคลเอนต์ปรับปรุงการร่างในเครื่อง แต่ไม่สามารถเชื่อถือได้โดยเซิร์ฟเวอร์ที่ได้รับคำขอที่ควบคุมโดยผู้ใช้ ผู้โจมตีสามารถข้ามเพจ เรียกอุปกรณ์ปลายทางได้โดยตรง หรือใช้ประโยชน์จากความแตกต่างของพาร์เซอร์ เซิร์ฟเวอร์จะต้องแยกวิเคราะห์และฆ่าเชื้ออีกครั้งด้วยการใช้งาน HTML5-aware ที่ได้รับการบำรุงรักษาซึ่งกำหนดค่าไว้สำหรับบริบทการแสดงผล

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

เครื่องมือนี้ครอบคลุมถึงอะไรบ้าง — การกรองเอาต์พุตของตัวแก้ไขแบบแคบ ไม่ใช่การฆ่าเชื้ออินพุตที่ไม่เป็นมิตรทั่วไป

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

iframe เป็นการป้องกันเชิงลึกสำหรับการเรนเดอร์ภายใน ToolAcre แอตทริบิวต์แซนด์บ็อกซ์ที่ว่างเปล่าไม่อนุญาตให้มีการเรียกใช้สคริปต์ การส่งแบบฟอร์ม หรือการเข้าถึงจากแหล่งเดียวกัน และนโยบายผู้อ้างอิงไม่ใช่ผู้อ้างอิง เมื่อ HTML ถูกคัดลอกไปที่อื่น เฟรมนั้นจะไม่ปกป้องอีกต่อไป ความปลอดภัยของสิ่งพิมพ์เป็นของระบบการรับ

ประเด็นสำคัญ: ตรวจสอบในพื้นที่ ฆ่าเชื้อบนเซิร์ฟเวอร์ - สรุปขั้นตอนการทำงานและวิธีที่ตัวแก้ไขช่วยให้คุณเห็นสิ่งที่นักฆ่าเชื้อต้องเผชิญ

ตรวจสอบภายในเครื่อง ฆ่าเชื้อบนเซิร์ฟเวอร์ และเรนเดอร์ตามบริบท นี่เป็นสามขั้นตอนที่แตกต่างกัน ToolAcre ช่วยเปิดเผยสัมภาระที่วางและนำเสนอชุดย่อยแบบร่างแบบอนุรักษ์นิยม ในขณะที่การแจ้งเตือนการลบจะทำให้มองเห็นผลกระทบของนโยบายก่อนที่ส่วนย่อยจะไปถึง CMS หรือเวิร์กโฟลว์อีเมล

อย่าทำการตลาดการแสดงตัวอย่างที่ประสบความสำเร็จเพื่อเป็นข้อพิสูจน์ต่อ XSS ใช้เพย์โหลดทดสอบเฉพาะในเนื้อหาแบบใช้แล้วทิ้ง เก็บแหล่งวัตถุดิบแยกกันเมื่อการตรวจสอบมีความสำคัญ และตรวจสอบการฆ่าเชื้อปลายทางอย่างเป็นอิสระ การเรียกร้องความปลอดภัยควรหยุดตรงที่โค้ดและขอบเขตการแสดงผลหยุดลง