Penapisan Data PHP: Cara Mencegah Serangan Skrip Merentas Tapak
Pengenalan:
Dalam persekitaran rangkaian moden, Skrip Merentas Tapak (XSS) telah menjadi salah satu kelemahan keselamatan rangkaian yang paling biasa dan berbahaya. Serangan XSS mengambil kesempatan daripada pengendalian data input pengguna yang tidak betul di tapak web, membolehkan penyerang menyuntik kod skrip berniat jahat dan mendapatkan maklumat sensitif pengguna. Artikel ini akan menerangkan cara untuk menghalang serangan skrip merentas tapak melalui penapisan data PHP dan menyediakan beberapa kod sampel.
$userInput = $_GET['input']; $filteredOutput = htmlspecialchars($userInput); echo $filteredOutput;
Dalam contoh di atas, $_GET['input'] bermaksud untuk mendapatkan data yang dimasukkan pengguna daripada parameter URL. Fungsi htmlspecialchars melepaskan data yang dimasukkan oleh pengguna dan kemudian mengeluarkannya ke halaman. Ini menghalang penyerang daripada menyuntik kod skrip berniat jahat.
Berikut ialah contoh kod menggunakan pernyataan mysqli precompiled:
$conn = new mysqli($servername, $username, $password, $dbname); $stmt = $conn->prepare("SELECT username FROM users WHERE id = ?"); $stmt->bind_param("i", $userId); $stmt->execute(); $stmt->bind_result($username); while ($stmt->fetch()) { echo htmlspecialchars($username); } $stmt->close(); $conn->close();
Dalam contoh di atas, pernyataan precompiled mysqli digunakan untuk mengikat $id yang dimasukkan oleh pengguna kepada pernyataan pertanyaan, dan pengikatan ditentukan melalui bind_param fungsi Jenis parameter. Kemudian laksanakan pertanyaan dan gunakan fungsi bind_result untuk mengikat keputusan pertanyaan kepada pembolehubah $nama pengguna. Akhir sekali, gunakan fungsi htmlspecialchars untuk menapis output untuk mengelakkan kod berniat jahat daripada dilaksanakan.
Berikut ialah kod sampel yang menggunakan fungsi filter_var untuk menapis input pengguna:
$userInput = $_POST['input']; $filteredInput = filter_var($userInput, FILTER_SANITIZE_STRING); echo $filteredInput;
Dalam contoh di atas, fungsi filter_var digunakan untuk menapis data yang dimasukkan pengguna, dan penapis ditentukan sebagai FILTER_SANITIZE_STRING, yang bermaksud bahawa hanya aksara rentetan asas dibenarkan. Ini akan menapis beberapa aksara khas dan teg HTML untuk mengelakkan serangan XSS.
Kesimpulan:
Untuk meningkatkan keselamatan laman web dan mencegah serangan skrip merentas tapak, kami perlu menapis dan memproses data yang dimasukkan oleh pengguna dengan betul. Artikel ini menerangkan cara menggunakan fungsi htmlspecialchars untuk menapis output, menggunakan penyata mysqli atau PDO yang dikompilasi untuk menapis pertanyaan pangkalan data dan menggunakan fungsi filter_var untuk menapis input pengguna. Dengan penapisan dan pemprosesan data yang betul, kami boleh melindungi tapak web dengan berkesan daripada ancaman serangan XSS.
Bahan rujukan:
Atas ialah kandungan terperinci Penapisan data PHP: Bagaimana untuk mencegah serangan skrip merentas tapak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!