Tất cả công cụ

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 &lt; và & đến &amp;. Giải mã các thực thể khi đọc các đoạn mã HTML được lưu trữ trở lại văn bản thuần túy để lập chỉ mục tìm kiếm. Chạy ngay trong trình duyệt để gỡ lỗi mẫu và CMS.
Đầu vào
Đầu ra
Hello world

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 &#39; hoặc &apos; tùy ngữ cảnh.

Giải mã xuất CMS

Mô tả sản phẩm &amp; 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.

Khi mã hóa không đủ

Khi bạn cần loại bỏ HTML bằng các thẻ được phép — sử dụng thư viện kiểu DOMPurify.
Khi nội dung là chuỗi JavaScript — cũng thoát khỏi dấu ngoặc kép cho ngữ cảnh JS.
Khi URL ở dạng href — hãy dùng bộ mã hóa URL riêng biệt.

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.

Lỗi mã hóa kép

&amp;amp; trong DB có nghĩa là ai đó đã mã hóa hai lần — giải mã một lần, sửa quy trình, mã hóa một lần ở đầu ra.

Email HTML

Khách hàng khác nhau tùy theo hỗ trợ thực thể — kiểm tra các ký tự đặc biệt được mã hóa trong Outlook và Gmail.

Câu hỏi thường gặp

Được đặt tên so với thực thể số?

&amp; so với &#38; — 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 &#x1F600; 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ó.

Đầu ra đánh dấu?

Ghép nối với markdownToHtml — mã hóa xảy ra ở lớp kết xuất trong các đường dẫn thích hợp.