ภาพรวม
การตั้งค่า policy
policy เริ่มต้นมีการตั้งค่าที่แนะนำซึ่งให้ความสมดุลระหว่างการใช้งานและการลดความเสี่ยงจากการโจมตี XML
ต่อไปนี้คือตัวอย่าง XML policy:
{
"policySettings": {
"EnableWarningHandling": false,
"BlockedTags": [
"/XInclude:include",
"/XSL/Transform:stylesheet"
],
"AllowedEncodings": [
"utf-8",
"utf-16",
"iso-8859-1"
],
"AllowEmptyEncoding": true,
"AllowDoctypeInCData": false
}
}
EnableWarningHandling
PolicySettings.EnableWarningHandlingบอกให้ XML validation API ส่งคืนคำเตือนใน response เมื่อทำการตรวจสอบความถูกต้องของ XML ขาเข้า โดยค่าเริ่มต้นคำเตือนจะถูกปิดใช้งาน
คำเตือนจะถูกส่งคืนมาในรูปแบบรายการ หากไม่พบ รายการจะว่างเปล่า:
{
"ValidationWarnings": [
"The optional field Test is missing."
]
}
BlockedTags
อนุญาตให้ใช้แท็กแบบกำหนดเองในเอกสาร XML ได้ การระบุแท็กที่อาจมีความเสี่ยงไว้ใน PolicySettings.BlockedTags จะทำให้ XML Validation API ล้มเหลวได้หากพบแท็กใดแท็กหนึ่งเหล่านี้ระหว่างการตรวจสอบความถูกต้องของ XML ขาเข้า อ็อบเจ็กต์ ValidationResults ใน response จะระบุว่าแท็กใดเป็นสาเหตุที่ทำให้การตรวจสอบล้มเหลว
แท็กที่ถูกบล็อกเหล่านี้จะจับคู่กับแท็กในเอกสาร XML โดยใช้ชื่อแท็กแบบขยายที่รวม namespace ไว้ด้วย วิธีนี้ช่วยให้มั่นใจได้ว่ามีการบล็อกแท็กที่ถูกต้อง และการใช้นามแฝง namespace ที่ต่างออกไปจะไม่สามารถหลีกเลี่ยงการตรวจสอบได้ แท็กจะถูกจับคู่ตามส่วนท้ายของชื่อ เพื่อให้กฎเดียวสามารถบล็อก namespace ที่กำหนดไว้สำหรับคนละปีได้ เช่น http://www.w3.org/2001/XInclude และ http://www.w3.org/1999/XML/xinclude.
ตัวอย่างเช่น ใน XML ต่อไปนี้:
<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:xi="http://www.w3.org/2001/XInclude">
<head>...</head>
<body>
...
<p><xi:include href="license.txt" parse="text"/></p>
</body>
</html>
namespace xi ถูกตั้งค่าเป็นhttp://www.w3.org/2001/XInclude และใช้เป็นคำนำหน้าสำหรับแท็ก xi:include ดังนั้นการตรวจสอบความถูกต้องของแท็กนี้จึงถูกประเมินเป็น http://www.w3.org/2001/XInclude:include ขณะนี้ชื่อแท็กแบบขยายนี้ลงท้ายด้วยหนึ่งในแท็กที่ถูกบล็อกโดยค่าเริ่มต้น/XInclude:include และถูกเพิ่มไปยังผลลัพธ์การตรวจสอบ การตรวจสอบเหล่านี้ยังไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ด้วย
โดยค่าเริ่มต้น แท็ก XML ต่อไปนี้จะถูกบล็อก:
- XInclude
- XSL
AllowedEncodings
เอกสาร XML อาจระบุมาตรฐานการเข้ารหัสอักขระได้ PolicySettings.AllowedEncodings เป็นรายการของสตริง ซึ่งอนุญาตให้ผู้ใช้ระบุได้ว่าจะอนุญาตมาตรฐานการเข้ารหัสอักขระใดใน XML ขาเข้า หาก XML Validation API พบการเข้ารหัสที่ระบุไว้ การตรวจสอบจะล้มเหลว และมาตรฐานการเข้ารหัสจะถูกระบุในอ็อบเจ็กต์ ValidationResults ในการตอบกลับ
โดยค่าเริ่มต้น มาตรฐานการเข้ารหัสอักขระต่อไปนี้ได้รับอนุญาต:
- UTF-8
- UTF-16
- ISO-8859-1
AllowEmptyEncoding
PolicySettings.AllowEmptyEndoding กำหนดค่าความสามารถในการอนุญาตให้การตรวจสอบผ่านได้ หากไม่มีการระบุการเข้ารหัสอักขระใน XML ขาเข้า
หมายเหตุ: แม้ว่าจะเปิดใช้งานสิ่งนี้อยู่ การตรวจสอบก็จะยังคงล้มเหลวหาก XML ขาเข้าระบุมาตรฐานการเข้ารหัสที่ไม่ได้รวมอยู่ใน PolicySettings.AllowedEncodings
ค่านี้ถูกตั้งเป็น true โดยค่าเริ่มต้น
AllowDoctypeInCData
ส่วน CDATA สามารถใช้เพื่อฝังเอกสาร XML ทั้งฉบับไว้ภายในเอกสาร XML อื่นได้ PolicySettings.AllowDoctypeInCData กำหนดค่าให้ XML Validation API ทำให้การตรวจสอบล้มเหลว หากพบการประกาศ doctype ในส่วน CDATA หรืออีกทางหนึ่ง สามารถตั้งค่านี้เป็น true เพื่ออนุญาตการประกาศ doctype ได้
ค่านี้ถูกตั้งเป็น false โดยค่าเริ่มต้น