ไทย

เครื่องมือสำหรับนักพัฒนา · HTML ตัวหนีเอนทิตี

ตัวละครทั้งห้าที่คุณต้องหลบหนีใน HTML และทำไมแต่ละตัวถึงอันตราย

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

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

อักขระห้าตัวที่คุณต้องหลีกเลี่ยงใน HTML และสาเหตุที่แต่ละตัวเป็นอันตราย ซึ่งแสดงเป็นไดอะแกรมอ้างอิงอักขระที่ปลอดภัยสำหรับเบราว์เซอร์
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

HTML การ Escape เหลืออักขระห้าตัว: & < > " และ ' โพสต์นี้จะอธิบายบทบาทของแต่ละบทบาทในมาร์กอัป เหตุใดรายการจึงขึ้นอยู่กับบริบท และวิธีการเลือกเอนทิตีสำหรับแต่ละรายการ

ความคิดเห็นที่ปิดแท็กตั้งแต่เนิ่นๆ — stray < และ > ที่เปลี่ยนข้อความของผู้ใช้ให้เป็นมาร์กอัป

ความคิดเห็นที่ปิดแท็กตั้งแต่เนิ่นๆ — stray < และ > ที่เปลี่ยนข้อความของผู้ใช้ให้เป็นมาร์กอัป การใช้งานจะแมปเครื่องหมายแอมเพอร์แซนด์ น้อยกว่า มากกว่า มากกว่า เครื่องหมายคำพูดคู่ และเครื่องหมายอะพอสทรอฟีเสมอ อัญประกาศเดี่ยวกลายเป็นเลขอ้างอิงทศนิยม 39 ในขณะที่อีกสี่รายการใช้รูปแบบที่มีชื่อที่คุ้นเคย

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

& ก่อนอื่น เสมอ — เหตุใดอักขระหลีกจึงต้องถูกหลีก และจะเกิดอะไรขึ้นหากคุณข้าม

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

นักพัฒนาที่แสดงข้อความที่ผู้ใช้ส่งลงในเพจสามารถทดสอบได้ก่อนเสมอว่าเหตุใดจึงต้องบันทึกอักขระหลีกก่อนที่นโยบายห้าอักขระจะผ่าน เปรียบเทียบ be Escape และอะไรหลังจากนั้นและค้นหา parser ที่รับผิดชอบจะเกิดขึ้นหากคุณข้าม ผลลัพธ์ของอักขระหลีก html นี้อธิบาย ไม่ใช่บริบทที่ปฏิบัติการได้

< และ > ในเนื้อหาข้อความ — วิธีที่ tokenizer ตัดสินใจว่าแท็กเริ่มต้นแล้ว และเหตุใด > จึงหนีส่วนใหญ่เพื่อความสมมาตร

< และ > ในเนื้อหาข้อความ — วิธีที่ tokenizer ตัดสินใจว่าแท็กเริ่มต้นแล้ว และเหตุใด > จึงถูก Escape เพื่อความสมมาตรเป็นส่วนใหญ่ มาร์กอัปน้อยกว่าเริ่มต้นในข้อความ HTML มากกว่าจะถูกเข้ารหัสอย่างสม่ำเสมอ แม้ว่าอันตรายจะขึ้นอยู่กับสถานะของพาร์เซอร์ ทำให้สามารถคาดเดาเอาต์พุตได้เมื่อตัวอย่างย้ายไปมาระหว่างข้อความและแอตทริบิวต์ที่ยกมา

แยกและอยู่ในเนื้อหาข้อความในตัวอย่างนโยบายสั้นๆ ห้าอักขระ แสดงให้เห็นว่า tokenizer ตัดสินใจว่าเป็นแหล่งที่มาตามตัวอักษร ติดตามแท็กที่เริ่มต้นไปยังปลายทาง และตั้งชื่อการอ่าน API และเหตุใดจึงหนี สำหรับอักขระหลีก html ส่วนใหญ่สำหรับความสมมาตรยังคงเป็นหลักฐานที่มีตัวแยกวิเคราะห์

เครื่องหมายคำพูดในค่าแอตทริบิวต์ — " และ ' และเหตุใดตัวคั่นแอตทริบิวต์ที่คุณใช้จึงตัดสินใจว่าค่าใดมีความสำคัญ

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

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

ตัวอย่างการทำงาน: การหลีกเลี่ยงตัวอย่างที่มีทั้งห้า - เอนทิตีที่สร้างขึ้นและผลลัพธ์ที่แสดงผล

ตัวอย่างการทำงาน: การหลีกเลี่ยงตัวอย่างที่มีทั้งห้า - เอนทิตีที่สร้างขึ้นและผลลัพธ์ที่แสดงผล สำหรับอินพุต & < > " เครื่องหมายอะพอสทรอฟี่ ทุกโหมดจะส่งคืน &amp; < > " ' ช่องว่างปกติยังคงเป็นช่องว่างและการแทนที่ทั้งห้ารายการจะปรากฏตามลำดับแหล่งที่มา

สร้างตัวอย่างการทำงานที่หลบหนี a ด้วยอินพุตที่ไม่เป็นอันตราย แทนวัสดุของลูกค้า บันทึกตัวอย่างที่มีทั้งห้ารายการ สังเกตเอนทิตีที่สร้างขึ้น และและนับทุก ๆ นโยบายที่ตั้งใจผ่านด้วยอักขระห้าตัว เส้นทางอักขระหลีก HTML นั้นช่วยให้นักพัฒนาแสดงผลข้อความที่ผู้ใช้ส่งลงในเพจประเมินผลลัพธ์ที่แสดงผลและหลักฐานนโยบายห้าอักขระโดยไม่ต้องเดา

รูปแบบที่มีชื่อเทียบกับตัวเลข - " กับ " และ ' กับ ' และปลอดภัยในตัวแยกวิเคราะห์รุ่นเก่า

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

สถานที่ที่มีชื่อเทียบกับรูปแบบตัวเลข quot กับ 34 และ และ 39 เทียบกับ apos และเคียงข้างกันในระหว่างการทบทวนนโยบายที่มีอักขระห้าตัว นักพัฒนาที่แสดงข้อความที่ผู้ใช้ส่งลงในเพจสามารถตัดสินใจได้ว่าข้อความใดที่ปลอดภัยในการเปลี่ยนแปลงที่การแปลงหรือดาวน์สตรีม เก็บบทสรุปอักขระหลีก html เกี่ยวกับตัวแยกวิเคราะห์รุ่นเก่าไว้จากการอ้างสิทธิ์ด้านความปลอดภัยทั่วไป

สิ่งนี้ไม่ครอบคลุมถึง - การหลบหนีภายใน <script> ตัวจัดการเหตุการณ์หรือ URL ซึ่งต้องใช้กฎที่แตกต่างกัน

สิ่งนี้ไม่ครอบคลุมถึง - การหลบหนีภายใน <script> ตัวจัดการเหตุการณ์หรือ URL ซึ่งต้องใช้กฎที่แตกต่างกัน การแทนที่ทั้งห้านี้อธิบายเฉพาะข้อความ HTML และแอตทริบิวต์เครื่องหมายคำพูดที่เป็น Escape เท่านั้น JavaScript, CSS, SQL และ URL ส่วนประกอบมีไวยากรณ์ที่เป็นอิสระ และไม่มีเอาท์พุตเอนทิตีใดที่เป็นตัวฆ่าเชื้อทั่วไป

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

ประเด็นสำคัญ: อักขระห้าตัวสำหรับข้อความ HTML และแอตทริบิวต์ที่ยกมา ไม่ใช่ทุกบริบทของตัวแยกวิเคราะห์

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

เชื่อมต่ออักขระ Takeaway ห้าตัวกับเอาต์พุตนโยบายห้าอักขระที่สังเกตได้ เก็บข้อความ html และเครื่องหมายคำพูดข้างผลลัพธ์แบบครั้งเดียว จากนั้นตรวจสอบว่าแอตทริบิวต์ที่ parser ไม่ใช่ทุกตัวจะเข้าสู่บริบทที่ใด นักพัฒนาที่แสดงข้อความที่ผู้ใช้ส่งลงในเพจสามารถตรวจสอบหลักฐานนโยบายที่มีอักขระห้าตัวได้ โดยเป็นการค้นหาอักขระหลีก html แบบแคบ การตัดสินใจเชิงปฏิบัติเบื้องหลังบทความนี้มีความเฉพาะเจาะจง: HTML การ Escape ลงมาเหลืออักขระ 5 ตัว: & < > " และ ' โพสต์นี้จะอธิบายบทบาทของแต่ละบทบาทในมาร์กอัป เหตุใดรายการจึงขึ้นอยู่กับบริบท และวิธีการเลือกเอนทิตีสำหรับแต่ละรายการ การกระทำของผู้อ่านเป็นรูปธรรมอย่างเท่าเทียมกัน: ลิงก์ไปยัง Escape เอนทิตี HTML และสาธิตการ Escape ตัวอย่างข้อมูลที่มีอักขระมาร์กอัป โดยอ้างอิงผู้อ่านไปยังหน้าเครื่องมือ ส่วน 'อินพุตและเอาต์พุตที่รองรับ' สำหรับชุดอักขระที่แน่นอนที่ตั้งค่าเป็น Escape