Tổng quan
Cài đặt policy
policy mặc định chứa các cài đặt được khuyến nghị, mang lại sự cân bằng giữa tính khả dụng và khả năng giảm thiểu tấn công XML.
Dưới đây là một ví dụ về policy XML:
{
"policySettings": {
"EnableWarningHandling": false,
"BlockedTags": [
"/XInclude:include",
"/XSL/Transform:stylesheet"
],
"AllowedEncodings": [
"utf-8",
"utf-16",
"iso-8859-1"
],
"AllowEmptyEncoding": true,
"AllowDoctypeInCData": false
}
}
EnableWarningHandling
PolicySettings.EnableWarningHandlingCho API xác thực XML biết cần trả về các cảnh báo trong phản hồi khi xác thực XML đầu vào. Các cảnh báo bị tắt theo mặc định.
Các cảnh báo được trả về trong một danh sách. Nếu không tìm thấy cảnh báo nào thì danh sách sẽ trống:
{
"ValidationWarnings": [
"The optional field Test is missing."
]
}
BlockedTags
Các thẻ tùy chỉnh được cho phép trong tài liệu XML. Việc chỉ định các thẻ có khả năng rủi ro trong PolicySettings.BlockedTags cho phép API Xác thực XML báo lỗi nếu gặp bất kỳ thẻ nào trong số này khi xác thực XML đầu vào. Đối tượng ValidationResults trong phản hồi xác định thẻ nào đã khiến việc xác thực thất bại.
Các thẻ bị chặn này khớp với các thẻ trong tài liệu XML bằng tên thẻ mở rộng có bao gồm namespace. Điều này đảm bảo đúng thẻ sẽ bị chặn và việc đặt bí danh namespace khác đi không thể vượt qua bước kiểm tra. Các thẻ được đối sánh theo phần kết thúc của chúng để một quy tắc duy nhất có thể chặn các namespace được định nghĩa cho các năm khác nhau, ví dụ: http://www.w3.org/2001/XInclude và http://www.w3.org/1999/XML/xinclude.
Ví dụ, trong XML sau đây:
<?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>
Không gian tên xi được đặt thành http://www.w3.org/2001/XInclude và được dùng để thêm tiền tố cho thẻ xi:include. Do đó, việc xác thực thẻ này được đánh giá thành http://www.w3.org/2001/XInclude:include. Tên thẻ mở rộng này hiện kết thúc bằng một trong các thẻ bị chặn mặc định /XInclude:include và được thêm vào kết quả xác thực. Các kiểm tra này cũng không phân biệt chữ hoa chữ thường.
Theo mặc định, các thẻ XML sau bị chặn:
- XInclude
- XSL
AllowedEncodings
Tài liệu XML có thể chỉ định một chuẩn mã hóa ký tự. PolicySettings.AllowedEncodings là một danh sách chuỗi, cho phép người dùng chỉ định những chuẩn mã hóa ký tự nào được phép trong XML đầu vào. Nếu XML Validation API gặp một mã hóa đã được chỉ định, quá trình xác thực sẽ thất bại và chuẩn mã hóa sẽ được xác định trong đối tượng ValidationResults trên phản hồi.
Theo mặc định, các chuẩn mã hóa ký tự sau được phép:
- UTF-8
- UTF-16
- ISO-8859-1
AllowEmptyEncoding
PolicySettings.AllowEmptyEndoding cấu hình khả năng cho phép quá trình xác thực thành công nếu không có mã hóa ký tự nào được chỉ định trong XML đầu vào.
Lưu ý: ngay cả khi tùy chọn này được bật, quá trình xác thực vẫn sẽ thất bại nếu XML đầu vào chỉ định một chuẩn mã hóa không có trong PolicySettings.AllowedEncodings.
Thiết lập này mặc định là true.
AllowDoctypeInCData
Các phần CDATA có thể được dùng để nhúng toàn bộ tài liệu XML vào bên trong các tài liệu XML khác. PolicySettings.AllowDoctypeInCData cấu hình XML Validation API để làm cho quá trình xác thực thất bại nếu gặp một khai báo doctype trong phần CDATA. Ngoài ra, có thể đặt giá trị này thành true để cho phép các khai báo doctype.
Thiết lập này mặc định là false.