ĐÓNG QUẢNG CÁO

Mã hóa/Giải mã HTML

Mã hóa/Giải mã HTML

Hỗ trợ thoát và bỏ thoát thực thể HTML, xử lý ký tự đặc biệt và thẻ. Tự động phát hiện định dạng thực thể được đặt tên và số, ngăn chặn tấn công XSS, phù hợp cho hiển thị đầu vào người dùng, ví dụ mã và xử lý nội dung an toàn.

Hướng dẫn sử dụng

🚀 Bắt đầu nhanh

  • Nhập nội dung (HTML hoặc văn bản đã escape) vào ô nhập.
  • Chọn Mã hóa hoặc Giải mã.
  • Nhấn nút để chuyển đổi; kết quả sẽ xuất hiện trong cùng textarea.
  • Nhấn Sao chép để tái sử dụng kết quả.

📌 Tình huống sử dụng phổ biến

  • Bình luận người dùng: escape nội dung do người dùng gửi để ngăn tấn công XSS.
  • Bài viết blog: hiển thị ví dụ mã HTML trong bài viết.
  • Bài viết diễn đàn: hiển thị an toàn nội dung do người dùng tạo.
  • Tin nhắn chat: ngăn mã độc lan truyền qua tính năng trò chuyện.
  • Dữ liệu form: xử lý và hiển thị dữ liệu gửi từ form.
  • Hiển thị mã: trình bày đoạn mã HTML/JavaScript trên trang web.

🎛️ Quy tắc escape & entity

  • Ký tự thường gặp: < > & " ' (dấu / thường không bắt buộc, tùy ngữ cảnh).
  • Định dạng entity: các ký tự đặc biệt được chuyển thành dạng &entity; hoặc &#code;, ví dụ < thành < hoặc <.
  • Escape thuộc tính: dấu nháy được chuyển thành ", bảo vệ giá trị thuộc tính HTML.
  • Bảo vệ script: thẻ <script> sẽ được escape để ngăn chặn tiêm JavaScript.
  • Ví dụ, viết <div> để tránh bị trình duyệt parse thành thẻ HTML thực.

🧭 Gợi ý sử dụng

  • Escape theo ngữ cảnh: chọn chiến lược escape phù hợp với vị trí output.
  • Xử lý phía server: các bước escape quan trọng nên thực hiện ở phía server.
  • Kiểm tra lại: xác minh output sau khi escape để đảm bảo không bỏ sót.
  • Dùng thư viện: trong production nên dùng thư viện escape trưởng thành thay vì tự xử lý.
  • Kiểm tra xem trước: sau khi escape, xem hiển thị thực tế trong console trình duyệt.

⚠️ Giới hạn & khả năng tương thích

  • Không phải sanitizer: không xóa script/event/protocol nguy hiểm; cần dùng kèm sanitize nội dung.
  • Bảo vệ chưa đầy đủ: chỉ escape không thể ngăn mọi rủi ro; cần kết hợp các lớp bảo vệ khác.
  • Phụ thuộc ngữ cảnh: các vị trí HTML, thuộc tính, JavaScript, CSS cần chiến lược escape khác nhau.
  • Hiệu năng: với văn bản rất lớn, xử lý có thể được đơn giản hóa để giữ trang mượt; hãy cân nhắc tách nhỏ.

🔒 Quyền riêng tư & bảo mật

  • Toàn bộ xử lý diễn ra trong trình duyệt; dữ liệu của bạn không rời khỏi thiết bị.

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

Tấn công XSS là gì?

XSS (Cross-Site Scripting) là kiểu tấn công mà kẻ xấu tiêm script độc hại vào trang web để đánh cắp thông tin hoặc thực hiện hành vi trái phép. Escape HTML là lớp phòng thủ cơ bản chống XSS.

Khi nào cần escape HTML?

Cần escape khi hiển thị bất kỳ dữ liệu người dùng nào, bao gồm bình luận, tin nhắn, dữ liệu form… Bất kỳ nội dung nào có thể chứa thẻ HTML đều nên được escape.

Sự khác nhau giữa < và < là gì?

Cả hai đều biểu diễn ký tự < (less‑than). < là entity tên (lt = less‑than); </< là entity dạng số/hex. Trong HTML hiện đại, chúng hoạt động tương đương: dùng < để dễ đọc; dùng </< khi không hỗ trợ entity tên hoặc cần biểu diễn ký tự bất kỳ/đa ngôn ngữ. Luôn giữ dấu chấm phẩy (ví dụ <); nếu bỏ, parser có thể dính với chữ sau, như “&notin” được đọc thành “¬”+“in” → “¬in”.

Escape có chặn được mọi trường hợp tiêm JavaScript không?

Không. Escape HTML chỉ hiệu quả trong ngữ cảnh HTML. JavaScript, CSS và URL cần những kỹ thuật escape riêng.

Vì sao đôi khi tôi thấy chuỗi kiểu < (bị escape hai lần)?

Do nội dung bị escape hai lần: lần đầu < → <, lần sau & → &, dẫn đến <. Hãy tránh escape lặp lại.

Làm sao cho phép một số thẻ HTML an toàn?

Hãy dùng sanitize (không chỉ escape): dùng allow‑list thẻ/thuộc tính an toàn và lọc protocol. Chỉ giữ lại p/br/ul/ol/li/a/strong/em/code/pre/blockquote/h1–h3; với a chỉ cho href/title/target (http/https/mailto/tel), với img chỉ src/alt; loại bỏ style và toàn bộ on*. Nên dùng DOMPurify/sanitize‑html; sanitize phía server nếu có thể; không bao giờ đưa nội dung không tin cậy vào innerHTML/dangerouslySetInnerHTML; hãy dùng textContent cho văn bản thuần.