เครื่องมือสำหรับนักพัฒนา · HTML ตัวหนีเอนทิตี
หลบหนี ถอดออก หรือฆ่าเชื้อ HTML: สามเทคนิคและเวลาที่ควรใช้แต่ละอย่าง
· มันทำงานอย่างไร
html ความปลอดภัย การประมวลผลข้อความ
การ Escape จะแสดงมาร์กอัปเป็นข้อความ การลอกจะลบออก และการฆ่าเชื้อจะเก็บชุดย่อยที่ปลอดภัยไว้ โพสต์นี้จะอธิบายว่าแต่ละเทคนิคทำอะไรได้บ้าง แต่ละเทคนิคล้มเหลว และวิธีการเลือกเทคนิคที่เหมาะสมสำหรับข้อมูลของคุณ
ความคิดเห็นที่ควรจะแสดงโค้ดและรันแทน ซึ่งถือเป็นตัวเลือกที่ผิดในสามเทคนิค
ความคิดเห็นที่ควรจะแสดงโค้ดและรันแทน ซึ่งถือเป็นตัวเลือกที่ผิดในสามเทคนิค ความคิดเห็นที่มีจุดประสงค์เพื่อแสดงมาร์กอัปสามารถดำเนินการได้เมื่อแอปพลิเคชันแสดงผลเป็น HTML การตัดสินใจขั้นแรกคือว่าผลิตภัณฑ์ต้องการข้อความธรรมดา ไม่มีมาร์กอัป หรือจงใจจำกัดชุดย่อยที่มีเนื้อหาสมบูรณ์
หากต้องการตรวจสอบการหลีกเลี่ยงเทียบกับการฆ่าเชื้อ HTML ให้สร้างความคิดเห็นสำหรับนักพัฒนาที่สร้างระบบแสดงความคิดเห็น เก็บรักษาควรจะแสดงโค้ดในขณะที่ตัวเลือกการดำเนินการสามรายการสร้างขึ้นและรันแทน ระบุจุดที่มีการบริโภคตัวเลือกที่ไม่ถูกต้อง การสังเกตเกี่ยวกับเทคนิคสามประการเป็นของ HTML ข้อความเท่านั้น
การ Escape: มาร์กอัปจะกลายเป็นข้อความที่มองเห็นได้ — มีการเปลี่ยนแปลงอะไรบ้าง สิ่งใดที่ถูกเก็บรักษาไว้ และเหตุใดจึงเป็นค่าเริ่มต้น
การ Escape: มาร์กอัปจะกลายเป็นข้อความที่มองเห็นได้ — มีการเปลี่ยนแปลงอะไรบ้าง สิ่งใดที่ถูกเก็บรักษาไว้ และเหตุใดจึงเป็นค่าเริ่มต้น การ Escape จะรักษาอักขระทุกตัวในขณะที่เปลี่ยนอักขระที่มีความสำคัญต่อมาร์กอัปให้เป็นข้อมูลอ้างอิง เบราเซอร์จะแสดงสัญลักษณ์ดั้งเดิมเป็นข้อความ ทำให้นี่เป็นค่าเริ่มต้นที่ถูกต้องสำหรับความคิดเห็นและตัวอย่างโค้ด
นักพัฒนาที่สร้างระบบแสดงความคิดเห็นสามารถทดสอบมาร์กอัป Escape ให้เห็นได้โดยการบันทึกข้อความว่ามีการเปลี่ยนแปลงอะไรก่อนที่ตัวเลือกการดำเนินการทั้งสามจะผ่าน การเปรียบเทียบจะถูกเก็บรักษาไว้และเหตุใดหลังจากนั้นและค้นหา parser ที่รับผิดชอบจึงเป็นค่าเริ่มต้น ผลลัพธ์ html แบบ Escape vs Sanitize นี้อธิบายหลักฐานตัวเลือกการดำเนินการ 3 แบบ ไม่ใช่บริบทที่ปฏิบัติการได้
การปอก: การลบแท็ก - เหตุใดการปอกแท็ก regex จึงไม่น่าเชื่อถือและสิ่งที่สูญเสียไป
การปอก: การลบแท็ก - เหตุใดการปอกแท็ก regex จึงไม่น่าเชื่อถือและสิ่งที่สูญเสียไป การปอกจะเป็นการนำแท็กที่ปรากฏออก และทำให้โครงสร้าง เครื่องหมายวรรคตอน หรือคำหายไป นิพจน์ทั่วไปไม่สามารถจำลองการกู้คืนข้อผิดพลาดของเบราว์เซอร์ องค์ประกอบข้อความดิบ หรือการซ้อนที่มีรูปแบบไม่ถูกต้องได้อย่างน่าเชื่อถือเพียงพอที่จะกำหนดความปลอดภัยได้
แยกการแยกแท็กการลบออกว่าทำไมในตัวอย่างตัวเลือกการดำเนินการสามรายการสั้นๆ แสดงการปอกแท็ก regex เป็นแหล่งตามตัวอักษร ติดตามสิ่งที่ไม่น่าเชื่อถือและสิ่งที่ไปยังปลายทาง และตั้งชื่อการอ่าน API ที่สูญเสียไป สำหรับ Escape vs Sanitize html หลักฐานตัวเลือกการดำเนินการสามรายการยังคงเป็นหลักฐานที่ผูกกับพาร์เซอร์
การฆ่าเชื้อ: การอนุญาตเซ็ตย่อย — รายการที่อนุญาต กฎของแอตทริบิวต์ และเหตุใดจึงยากที่สุดในทั้งสาม
การฆ่าเชื้อ: การอนุญาตเซ็ตย่อย — รายการที่อนุญาต กฎของแอตทริบิวต์ และเหตุใดจึงยากที่สุดในทั้งสาม การแยกวิเคราะห์หรือโทเค็นมาร์กอัปและเก็บรายการที่อนุญาตอย่างชัดเจนขององค์ประกอบ แอตทริบิวต์ และรูปแบบ URL มันยากกว่ามากเพราะการตีความของเบราว์เซอร์ การป้อนข้อมูลที่มีรูปแบบไม่ถูกต้อง และภาษาที่ซ้อนกันมีความสำคัญ
ดำเนินการฆ่าเชื้อโดยปล่อยให้เซตย่อยเป็นการทดสอบขอบเขต นักพัฒนาที่สร้างระบบแสดงความคิดเห็นควรเก็บกฎแอ็ตทริบิวต์ของรายการอนุญาต ดำเนินการตัวเลือกการดำเนินการสามรายการ และตรวจสอบและทำไมจึงเป็นอักขระทีละอักขระก่อนที่จะเปลี่ยนส่วนที่ยากที่สุดของ การอ้างสิทธิ์ประมาณสามจุดในเลเยอร์ HTML นี้
ตัวอย่างการทำงาน: ผู้ใช้คนเดียวกันป้อนข้อมูลผ่านทั้งสาม - ข้อความผลลัพธ์หรือมาร์กอัปที่เปรียบเทียบ
ตัวอย่างการทำงาน: ผู้ใช้คนเดียวกันป้อนข้อมูลผ่านทั้งสาม - ข้อความผลลัพธ์หรือมาร์กอัปที่เปรียบเทียบ เมื่อให้ <strong onclick="go()">สวัสดี & บาย</strong> การหลบหนีจะแสดงแหล่งที่มาทั้งหมด การตัดเป้าหมายเพื่อสวัสดี & บาย และการฆ่าเชื้ออาจคง <strong> ไว้ในขณะที่ลบ onclick ออกภายใต้นโยบายที่ได้รับการพิสูจน์แล้ว
ทำซ้ำตัวอย่างการทำงานแบบเดียวกันโดยใช้ข้อมูลที่ไม่เป็นอันตรายแทนวัสดุของลูกค้า บันทึกการป้อนข้อมูลของผู้ใช้ผ่านทั้งหมด สังเกตข้อความผลลัพธ์สามรายการ และนับทุกตัวเลือกการดำเนินการสามรายการโดยเจตนา Escape vs Sanitize html Trail นั้นช่วยให้นักพัฒนาสร้างระบบแสดงความคิดเห็นประเมินหรือเปรียบเทียบมาร์กอัปและหลักฐานตัวเลือกการดำเนินการสามแบบโดยไม่ต้องเดา
การเลือกตามเจตนา — ข้อความธรรมดาและตัวอย่างโค้ดจะถูกหลีกหนี Rich Text ฆ่าเชื้อ; การปอกไม่ค่อยถูกต้อง
การเลือกตามเจตนา — ข้อความธรรมดาและตัวอย่างโค้ดจะถูกหลีก Rich Text ฆ่าเชื้อ; การปอกไม่ค่อยถูกต้อง เลือกจากความตั้งใจ: ข้อความธรรมดาและตัวอย่างจะถูกยกเว้น Rich Text ที่รองรับได้รับการทำความสะอาดโดยนโยบายเฉพาะที่ได้รับการดูแล การปอกคือการแปลงที่สูญเสียไป และไม่รับประกัน XSS
วางการเลือกตามเจตนาข้อความธรรมดา ข้อความ และตัวอย่างโค้ด และ Escape Rich Text จะถูกสุขอนามัยเคียงข้างกันในระหว่างการตรวจสอบตัวเลือกการดำเนินการทั้งสาม นักพัฒนาที่สร้างระบบแสดงความคิดเห็นสามารถตัดสินใจได้ว่าการลอกนั้นแทบจะไม่มีการเปลี่ยนแปลงเลยที่การแปลงหรือดาวน์สตรีม เก็บข้อสรุประหว่างการหลบหนีและการทำให้บริสุทธิ์ของ html เกี่ยวกับหลักฐานทางเลือกในการดำเนินการสามประการจากการกล่าวอ้างด้านความปลอดภัยทั่วไป
สิ่งนี้ไม่ครอบคลุม — นโยบายการเรนเดอร์มาร์กดาวน์และความปลอดภัยของเนื้อหาเป็นเลเยอร์เพิ่มเติม
สิ่งนี้ไม่ครอบคลุม — นโยบายการเรนเดอร์มาร์กดาวน์และความปลอดภัยของเนื้อหาเป็นเลเยอร์เพิ่มเติม Markdown และนโยบายความปลอดภัยของเนื้อหาจะเพิ่มขั้นตอนแยกกัน Markdown สร้าง HTML ที่ยังต้องการการเรนเดอร์ที่ปลอดภัย ในขณะที่ CSP สามารถจำกัดผลที่ตามมาได้ แต่ไม่ได้แก้ไขการตัดสินใจเอาต์พุตที่ไม่ปลอดภัย
กำหนดสิ่งที่ไม่ได้ทำก่อนที่จะรันตัวเลือกการดำเนินการสามรายการ บันทึกการเรนเดอร์มาร์กดาวน์แบบครอบคลุมและเป็นตัวควบคุม ตรวจสอบจุดโค้ดที่อยู่เบื้องหลังนโยบายความปลอดภัยของเนื้อหา และแมปเลเยอร์เพิ่มเติมกับล่ามคนถัดไป สิ่งนี้ทำให้หลักฐานตัวเลือกการดำเนินการสามประการสามารถตรวจสอบได้สำหรับนักพัฒนาที่สร้างระบบความคิดเห็นเพื่อตรวจสอบการหลบหนีเทียบกับการฆ่าเชื้อ HTML
ประเด็นสำคัญ: ToolAcre ทำการหลบหนีเท่านั้น ไม่มีการปอกหรือฆ่าเชื้อ
ประเด็นสำคัญ: ToolAcre ดำเนินการหลบหนีเท่านั้น ไม่รวมการปอกหรือฆ่าเชื้อ ToolAcre ดำเนินการเฉพาะกรณี Escape เท่านั้น ไม่ใช่น้ำยาฆ่าเชื้อ XSS และไม่ยอมรับ HTML ที่ไม่เป็นมิตรสำหรับการแสดงผลแบบสมบูรณ์ที่ปลอดภัย มันแปลงอินพุตที่ดูมาร์กอัปเป็นข้อความ HTML
เชื่อมต่อเครื่องมือ Takeaway ทำการหลบหนีไปยังเอาต์พุตตัวเลือกการดำเนินการสามแบบที่สังเกตได้ เก็บไว้เพียงอย่าลอกออกหรือข้างผลการผ่านครั้งเดียว จากนั้นตรวจสอบว่าการฆ่าเชื้อเข้าสู่หลักฐานการเลือกปฏิบัติสามขั้นตอนที่ใด นักพัฒนาที่สร้างระบบแสดงความคิดเห็นสามารถตรวจสอบหลักฐานตัวเลือกการดำเนินงานสามแบบเป็นการหลีกเลี่ยงแบบแคบและการค้นหา html ที่สะอาด การตัดสินใจเชิงปฏิบัติเบื้องหลังบทความนี้มีความเฉพาะเจาะจง: การ Escape แสดงมาร์กอัปเป็นข้อความ การลอกจะลบออก และการฆ่าเชื้อจะรักษาส่วนย่อยที่ปลอดภัย โพสต์นี้จะอธิบายว่าแต่ละเทคนิคทำอะไรได้บ้าง แต่ละเทคนิคล้มเหลว และวิธีการเลือกเทคนิคที่เหมาะสมสำหรับข้อมูลของคุณ การดำเนินการของผู้อ่านเป็นรูปธรรมเท่าเทียมกัน: ลิงก์ไปยังตัวหนีเอนทิตี HTML และสาธิตการหลีกเลี่ยงตัวอย่างข้อมูลอินพุตของผู้ใช้เพื่อให้แสดงเป็นมาร์กอัปตามตัวอักษร