Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Menyahkod Entiti Khas HTML Dengan Mudah Semasa Mencegah XSS?

Bagaimanakah Saya Boleh Menyahkod Entiti Khas HTML Dengan Mudah Semasa Mencegah XSS?

Barbara Streisand
Barbara Streisandasal
2024-11-28 20:35:13719semak imbas

How Can I Easily Decode HTML Special Entities While Preventing XSS?

Menyahkod Entiti Khas HTML dengan Mudah

Menyahkod entiti khas HTML boleh menjadi tugas yang mengelirukan. Pertimbangkan respons JSON berikut:

{
    "message": "We're unable to complete your request at this time."
}

Perhatikan apostrof yang dikodkan ('). Walaupun sebab di sebalik pengekodan ini mungkin tidak jelas, kebimbangan utama anda ialah menyahkodnya.

Pendekatan Invasif jQuery

Satu kaedah yang mungkin menggunakan jQuery ialah menukar rentetan HTML kepada div dan ekstrak kandungan teksnya:

function decodeHtml(html) {
    return $('<div>').html(html).text();
}

Walau bagaimanapun, pendekatan ini agak tidak konvensional.

Penyelesaian Pilihan: Memelihara Teg

Ujud penyelesaian yang lebih elegan yang turut mengekalkan tag:

function decodeHtml(html) {
    var txt = document.createElement("textarea");
    txt.innerHTML = html;
    return txt.value;
}

Pendekatan ini melibatkan penciptaan elemen textarea, menetapkan innerHTMLnya kepada rentetan HTML, dan kemudian mendapatkan semula nilainya, yang akan dinyahkodkan kandungan.

Contoh Praktikal dengan Pencegahan XSS

Pertimbangkan contoh berikut:

Input:
Entity:&amp;nbsp;Bad attempt at XSS:<script>alert('new\nline?')</script><br>

Output:
Entity: Bad attempt at XSS:<script>alert('new\nline?')</script><br>

Seperti yang anda lihat, entiti khas (  ) dinyahkod, manakala teg skrip dipelihara, memastikan keselamatan aplikasi anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahkod Entiti Khas HTML Dengan Mudah Semasa Mencegah XSS?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn