Document: phương thức parseHTMLUnsafe() static
Baseline
2025
Newly available
Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Warning: Phương thức này phân tích cú pháp đầu vào của nó dưới dạng HTML, ghi kết quả vào DOM. Các API như vậy được gọi là injection sinks, và có thể là vector cho các cuộc tấn công cross-site scripting (XSS), nếu đầu vào ban đầu đến từ kẻ tấn công.
Bạn có thể giảm thiểu rủi ro này bằng cách luôn truyền các đối tượng TrustedHTML thay vì chuỗi và enforcing trusted types.
Xem Cân nhắc bảo mật để biết thêm thông tin.
Note:
Document.parseHTML() gần như luôn nên được sử dụng thay vì phương thức này — trên các trình duyệt nơi nó được hỗ trợ — vì nó luôn xóa các thực thể HTML không an toàn XSS.
Phương thức static parseHTMLUnsafe() của đối tượng Document được sử dụng để phân tích cú pháp đầu vào HTML, tùy chọn lọc các phần tử và thuộc tính HTML không mong muốn, nhằm tạo một instance Document mới.
Cú pháp
Document.parseHTMLUnsafe(input)
Document.parseHTMLUnsafe(input, options)
Tham số
input-
Một instance
TrustedHTMLhoặc một chuỗi xác định HTML cần phân tích cú pháp. optionsOptional-
Một đối tượng tùy chọn với các tham số tùy chọn sau:
sanitizerOptional-
Một đối tượng
SanitizerhoặcSanitizerConfigxác định những phần tử nào của đầu vào sẽ được phép hoặc bị xóa. Đây cũng có thể là một chuỗi với giá trị"default", áp dụng mộtSanitizervới cấu hình sanitizer mặc định (an toàn XSS). Nếu không được chỉ định, không có sanitizer nào được sử dụng.Lưu ý rằng nếu bạn đang sử dụng cùng cấu hình nhiều lần, dự kiến sẽ hiệu quả hơn khi sử dụng
Sanitizervà sửa đổi nó khi cần.
Giá trị trả về
Một Document.
Ngoại lệ
TypeError-
Được ném ra nếu:
htmlđược truyền một chuỗi khi Trusted Types được thực thi bởi CSP và không có chính sách mặc định nào được định nghĩa.options.sanitizerđược truyền một:SanitizerConfigkhông hợp lệ. Ví dụ: cấu hình bao gồm cả cài đặt cấu hình "allowed" và "removed".- chuỗi không có giá trị
"default". - giá trị không phải là
Sanitizer,SanitizerConfig, hoặc chuỗi.
Mô tả
Phương thức static parseHTMLUnsafe() có thể được sử dụng để tạo một instance Document mới, tùy chọn lọc ra các phần tử và thuộc tính không mong muốn.
Document kết quả sẽ có content type là "text/html", character set là UTF-8 và URL là "about:blank".
HTML đầu vào có thể bao gồm declarative shadow roots.
Nếu chuỗi HTML định nghĩa nhiều hơn một declarative shadow root trong một shadow host cụ thể thì chỉ ShadowRoot đầu tiên được tạo — các khai báo tiếp theo được phân tích cú pháp dưới dạng các phần tử <template> trong shadow root đó.
parseHTMLUnsafe() không thực hiện bất kỳ việc làm sạch nào theo mặc định.
Nếu không có sanitizer nào được truyền làm tham số, tất cả các thực thể HTML trong đầu vào sẽ được tiêm.
Cân nhắc bảo mật
Hậu tố "Unsafe" trong tên phương thức cho biết nó không thực thi việc xóa tất cả các thực thể HTML không an toàn XSS (không giống như Document.parseHTML()).
Mặc dù nó có thể làm như vậy nếu được sử dụng với một sanitizer phù hợp, nó không phải sử dụng một sanitizer hiệu quả, hoặc bất kỳ sanitizer nào!
Phương thức do đó là một vector tiềm năng cho các cuộc tấn công cross-site scripting (XSS), nơi các chuỗi không an toàn tiềm ẩn do người dùng cung cấp được tiêm vào DOM mà không được làm sạch trước.
Bạn nên giảm thiểu rủi ro này bằng cách luôn truyền các đối tượng TrustedHTML thay vì chuỗi, và enforcing trusted types bằng cách sử dụng chỉ thị CSP require-trusted-types-for.
Điều này đảm bảo rằng đầu vào được truyền qua một hàm biến đổi, có cơ hội sanitize đầu vào để loại bỏ đánh dấu nguy hiểm tiềm ẩn (chẳng hạn như các phần tử <script> và các thuộc tính trình xử lý sự kiện), trước khi nó được tiêm.
Sử dụng TrustedHTML giúp có thể kiểm tra và xác minh rằng mã sanitize hiệu quả chỉ ở một vài nơi, thay vì rải rác trên tất cả các injection sinks của bạn.
Bạn không cần phải truyền một sanitizer cho phương thức khi sử dụng TrustedHTML.
Nếu vì bất kỳ lý do gì bạn không thể sử dụng TrustedHTML (hoặc tốt hơn nữa, setHTML()) thì tùy chọn an toàn tiếp theo là sử dụng setHTMLUnsafe() với cấu hình sanitizer mặc định an toàn XSS.
Đặc tả kỹ thuật
| Specification |
|---|
| HTML> # dom-parsehtmlunsafe> |
Tương thích trình duyệt
Xem thêm
Document.parseHTML()Element.setHTML()vàElement.setHTMLUnsafe()ShadowRoot.setHTML()vàShadowRoot.setHTMLUnsafe()DOMParser.parseFromString()để phân tích cú pháp HTML hoặc XML thành cây DOM- HTML Sanitizer API