Rumah >pembangunan bahagian belakang >tutorial php >Penapisan data PHP: menghalang serangan XSS dan CSRF

Penapisan data PHP: menghalang serangan XSS dan CSRF

PHPz
PHPzasal
2023-07-29 15:33:331483semak imbas

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.

  1. Cegah serangan XSS

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 {
    // 用户输入不合法
}
  1. Cegah serangan CSRF

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:

  • Dokumentasi rasmi PHP (https://www.php.net/)
  • Tapak web rasmi OWASP (https://owasp.org/)

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!

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