← Quay về trang chủ

Escape HTML trong javascript

Escape string trong javascript, html là hành động ta thay thế một số ký tự đặc biệt với HTML character và phòng tránh XSS attack.

Các ký tự cần escape là "&", "<", ">", '"', và "'"

Cùng xem chuỗi dưới đây, nếu không được escape và in ra trực tiếp bạn sẽ nhìn thấy một alert thay vì đọc được đoạn code này.

<script> alert(123) </script>

Chúng ta có thể escape HTML bằng cách dùng hàm replaceAll của String.

function escape(string) {
  return string.replaceAll('&', '&amp;')
    .replaceAll('<', '&lt;')
    .replaceAll('>', '&gt;')
    .replaceAll('"', '&quot;')
    .replaceAll("'", '&#39;')
}

escape('<script> alert(123) </script>') // '&lt;script&gt; alert(123) &lt;/script&gt;'

Unescape

Unescape HTML là quá trình ngược lại với việc escape.

function unescape(string) {
  return string.replaceAll('&amp;', '&')
    .replaceAll('&lt;', '<')
    .replaceAll('&gt;', '>')
    .replaceAll('&quot;', '"')
    .replaceAll('&#39;', "'")
}

unescape('&lt;script&gt; alert(123) &lt;/script&gt;')