Penapisan Data PHP: Cegah serangan XSS dan CSRF
Dengan perkembangan Internet, keselamatan rangkaian telah menjadi salah satu tumpuan perhatian orang ramai. Dalam pembangunan laman web, adalah sangat penting untuk menapis dan mengesahkan data yang diserahkan pengguna, terutamanya untuk mencegah serangan XSS (serangan skrip silang tapak) dan CSRF (serangan pemalsuan permintaan silang tapak). Artikel ini akan memperkenalkan cara menggunakan PHP untuk menghalang kedua-dua kelemahan keselamatan biasa ini dan menyediakan beberapa kod sampel untuk rujukan.
Serangan XSS merujuk kepada penyerang berniat jahat yang mengganggu kandungan web dengan menyuntik skrip atau kod berniat jahat untuk mencuri maklumat sensitif pengguna atau menyebarkan perisian hasad. Untuk mengelakkan serangan XSS, kami perlu menapis dan melarikan diri dari data yang dimasukkan oleh pengguna.
(1) Gunakan fungsi htmlspecialchars() untuk melepaskan aksara khas HTML.
$name = $_POST['name']; $filtered_name = htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
(2) Gunakan ungkapan biasa untuk menapis input pengguna.
$name = $_POST['name']; $pattern = '/^[a-zA-Z0-9]+$/'; if (preg_match($pattern, $name)) { // 用户输入合法 } else { // 用户输入不合法 }
Serangan CSRF merujuk kepada penyerang yang melakukan operasi tanpa kebenaran dengan memalsukan permintaan pengguna, seperti mengubah suai maklumat pengguna, memulakan pemindahan berniat jahat, dsb. Untuk mengelakkan serangan CSRF, kita boleh mengambil langkah-langkah berikut.
(1) Gunakan pengesahan token CSRF.
session_start(); $csrf_token = bin2hex(random_bytes(32)); // 生成随机的令牌 $_SESSION['csrf_token'] = $csrf_token; // 在表单中添加令牌 echo "<input type='hidden' name='csrf_token' value='{$csrf_token}'>"; // 验证令牌 if ($_POST['csrf_token'] === $_SESSION['csrf_token']) { // 令牌验证通过 } else { // 令牌验证失败 }
(2) Hadkan sumber permintaan.
if ($_SERVER['HTTP_REFERER'] !== 'http://www.example.com') { // 请求来源不合法 } else { // 请求来源合法 }
Ringkasnya, menapis dan mengesahkan data yang diserahkan pengguna ialah langkah penting dalam memastikan keselamatan tapak web. Dengan melarikan diri dari aksara khas HTML, menggunakan ungkapan biasa untuk menapis input pengguna, menggunakan pengesahan token CSRF dan mengehadkan sumber permintaan, kami boleh menghalang serangan XSS dan CSRF dengan berkesan. Walau bagaimanapun, keselamatan adalah proses yang berterusan, dan kami perlu sentiasa mengemas kini dan mengukuhkan langkah keselamatan untuk meningkatkan keselamatan tapak web.
Bahan rujukan:
Atas ialah kandungan terperinci Penapisan data PHP: menghalang serangan XSS dan CSRF. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!