Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mempertahankan daripada serangan keselamatan pada rangka kerja PHP?

Bagaimana untuk mempertahankan daripada serangan keselamatan pada rangka kerja PHP?

WBOY
WBOYasal
2024-06-03 18:15:01666semak imbas

Serangan keselamatan rangka kerja PHP biasa termasuk XSS, suntikan SQL, CSRF, kelemahan muat naik fail dan RCE. Langkah-langkah pertahanan termasuk: mengesahkan input; menghalang serangan CSRF;

Bagaimana untuk mempertahankan daripada serangan keselamatan pada rangka kerja PHP?

Cara mempertahankan daripada serangan keselamatan pada rangka kerja PHP

Rangka kerja PHP digunakan secara meluas untuk membina tapak web dinamik, tetapi ia juga terdedah kepada pelbagai serangan keselamatan. Untuk melindungi aplikasi anda, adalah penting untuk memahami serangan ini dan mengambil langkah berjaga-jaga yang sewajarnya.

Serangan keselamatan rangka kerja PHP biasa

  • Skrip silang tapak (XSS): Penyerang menyuntik skrip berniat jahat yang dilaksanakan dalam penyemak imbas pengguna.
  • SQL Injection: Penyerang memanipulasi pangkalan data dengan memasukkan pertanyaan berniat jahat untuk mendapatkan akses tanpa kebenaran.
  • Pemalsuan permintaan merentas tapak (CSRF): Penyerang menipu pengguna supaya menghantar permintaan berniat jahat kepada aplikasi tanpa pengetahuan mereka.
  • Kerentanan Muat Naik Fail: Penyerang memuat naik fail berniat jahat, seperti cangkerang web yang mengandungi pintu belakang.
  • Pelaksanaan Kod Jauh (RCE): Penyerang boleh melaksanakan kod sewenang-wenangnya dengan mengeksploitasi kelemahan dalam rangka kerja.

Langkah-langkah Pertahanan

1. Gunakan Input Yang Disahkan

Pengesahan input menghapuskan keupayaan penyerang untuk memasukkan aksara atau kod yang berpotensi berbahaya.

<?php
// 使用 PHP 内置函数过滤用户输入
$sanitized_input = filter_input(INPUT_POST, 'input_field', FILTER_SANITIZE_STRING);
?>

2 Sediakan pertanyaan SQL

Menggunakan pernyataan yang disediakan menghalang serangan suntikan SQL kerana ia secara automatik melepaskan input pengguna.

<?php
// 准备并执行带有占位符的 SQL 查询
$stmt = $conn->prepare("SELECT * FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
?>

3. Cegah serangan CSRF

Menggunakan token anti-CSRF menghalang serangan CSRF kerana ia memerlukan setiap permintaan untuk disahkan dalam aplikasi.

<?php
// 在表单中添加一个隐藏的反 CSRF 令牌
echo '<input type="hidden" name="csrf_token" value="' . $csrf_token . '">';

// 在服务器端验证反 CSRF 令牌
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] != $csrf_token) {
    die("Invalid CSRF token");
}
?>

4. Hadkan muat naik fail

Menghadkan saiz, jenis dan sambungan fail boleh membantu menghalang kerentanan muat naik fail.

<?php
// 定义允许的文件类型
$allowed_extensions = ['jpg', 'png', 'pdf'];

// 检查文件大小和扩展名
if ($_FILES['file']['size'] > 1000000 || !in_array(pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION), $allowed_extensions)) {
    die("Invalid file");
}
?>

5. Kelemahan rangka kerja Patch

Penjual rangka kerja kerap mengeluarkan patch untuk membetulkan kelemahan. Adalah penting untuk memastikan versi rangka kerja anda dikemas kini.

composer update

Contoh Praktikal

Anda boleh menghalang serangan skrip merentas tapak (XSS) dengan menggunakan langkah berjaga-jaga (seperti menapis input, pernyataan yang disediakan) dalam coretan kod berikut:

<?php
// 过滤用户输入
$comment = filter_input(INPUT_POST, 'comment', FILTER_SANITIZE_STRING);

// 使用准备好的语句插入评论
$stmt = $conn->prepare("INSERT INTO comments (comment) VALUES (?)");
$stmt->bind_param("s", $comment);
$stmt->execute();
?>

Mengikut langkah ini akan membantu melindungi aplikasi Rangka Kerja PHP anda dilindungi daripada serangan keselamatan.

Atas ialah kandungan terperinci Bagaimana untuk mempertahankan daripada serangan keselamatan pada rangka kerja PHP?. 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