Bộ mã hóa / giải mã HTML
Hiển thị thông tin đầu vào của người dùng một cách an toàn bằng cách chuyển đổi < thành < và & đến &.
Cách mã hóa hoặc giải mã HTML
1. Chọn chế độ mã hóa (escape) hoặc giải mã.
2. Dán HTML hoặc văn bản thuần túy.
3. Sao chép đầu ra thoát cho mẫu hoặc thuộc tính.
4. Giải mã để đọc các bản xuất XML/HTML nặng về thực thể.
HTML ví dụ thực thể
Hiển thị an toàn nhận xét của người dùng
Đầu vào <script>alert(1)</script> trở thành văn bản vô hại khi được mã hóa để chèn an toàn bên trongHTML thông qua nút văn bản.
Dấu nháy đơn trong thuộc tính
O'Reilly trong thuộc tính title được mã hóa dấu nháy thành ' hoặc ' tùy ngữ cảnh.
Giải mã xuất CMS
Mô tả sản phẩm & sao chép; giải mã thành & để chỉnh sửa.
Khi nào nên mã hóa HTML
• Khi chèn văn bản không đáng tin cậy vào các mẫu HTML.
• Khi gỡ lỗi mã hóa kép trong các mẫu email.
• Khi chuẩn bị các đoạn mã HTML được tạo bằng markdown.
Vấn đề quan trọng
Việc thoát HTML cho các giá trị thuộc tính có thể khác với các nút văn bản — dấu ngoặc kép rất quan trọng trong các thuộc tính. Bảng cheat OWASP cũng liệt kê các ngữ cảnh JS và CSS.
Câu hỏi thường gặp
Được đặt tên so với thực thể số?
& so với & — tương đương với các ký tự thông thường; biểu tượng cảm xúc có thể cần 😀 dạng số.
Mã hóa toàn bộ tài liệu HTML?
Mã hóa toàn bộ tài liệu hiển thị các thẻ bằng chữ — thường chỉ mã hóa dữ liệu người dùng.
Ngăn chặn XSS?
Việc mã hóa các nút văn bản sẽ giúp ích; không bao giờ kết hợp HTML người dùng thô. Tiêu đề CSP tăng cường khả năng phòng thủ.
Ký tự UTF-8?
Thường được để lại dưới dạng UTF-8 trong HTML5 hiện đại; các thực thể tùy chọn cho không phải ASCII.
Cục bộ?
Có.