Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Soalan Lazim dan Penyelesaian untuk Keselamatan Borang PHP

Soalan Lazim dan Penyelesaian untuk Keselamatan Borang PHP

PHPz
PHPzasal
2023-08-26 14:06:151275semak imbas

Soalan Lazim dan Penyelesaian untuk Keselamatan Borang PHP

Masalah dan penyelesaian biasa kepada keselamatan borang PHP

Dengan perkembangan Internet, semakin banyak laman web dan aplikasi menggunakan PHP untuk memproses data borang yang diserahkan oleh pengguna. Walau bagaimanapun, disebabkan oleh kekurangan langkah keselamatan yang mencukupi, borang PHP selalunya menjadi sasaran mudah untuk serangan berniat jahat. Artikel ini akan memperkenalkan masalah biasa dengan keselamatan borang PHP dan menyediakan penyelesaian yang sepadan.

1. Serangan skrip merentas tapak (XSS)

Serangan skrip merentas tapak ialah kelemahan keselamatan rangkaian yang biasa Penyerang menggunakan kelemahan tapak web untuk menyuntik skrip berniat jahat kepada pengguna. Skrip ini akan dilaksanakan dalam penyemak imbas pengguna untuk mencuri maklumat sensitif pengguna atau melakukan tingkah laku berniat jahat yang lain.

Penyelesaian:

  1. Penapisan input: Untuk data borang yang diserahkan oleh pengguna, gunakan fungsi htmlspecialchars terbina dalam PHP untuk melarikan diri daripada pemprosesan untuk menukar aksara khas kepada entiti HTML untuk mengelakkan suntikan skrip berniat jahat. Kod sampel adalah seperti berikut:
$name = htmlspecialchars($_POST['name']);
  1. Penapisan output: Sebelum memaparkan data yang dihantar oleh pengguna pada halaman web, data juga perlu ditapis. Gunakan fungsi penapisan XSS strip_tags untuk mengalih keluar tag HTML dan PHP untuk menghalang pelaksanaan skrip berniat jahat. Kod sampel adalah seperti berikut:
echo strip_tags($name);

2. Serangan suntikan SQL

Serangan suntikan SQL bermaksud penyerang menyuntik kod SQL ke dalam borang input untuk mengubah suai pangkalan data atau mendapatkan data sensitif. Ini adalah kaedah serangan biasa yang menimbulkan potensi ancaman kepada keselamatan tapak web dan maklumat pengguna.

Penyelesaian:

  1. Gunakan pertanyaan berparameter atau pertanyaan prapenyusun: Untuk data yang diserahkan pengguna, gunakan pernyataan PDO atau mysqli tersusun atau pengikatan parameter untuk membina pernyataan pertanyaan SQL. Ini menghalang serangan suntikan berniat jahat. Kod sampel adalah seperti berikut:
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :name');
$stmt->bindParam(':name', $name);
$stmt->execute();
  1. Penapisan input data: Untuk data yang dimasukkan pengguna, gunakan fungsi penapisan terbina dalam PHP untuk pencegahan. Contohnya, gunakan fungsi mysqli_real_escape_string untuk melepaskan aksara khas. Kod sampel adalah seperti berikut:
$name = mysqli_real_escape_string($conn, $_POST['name']);

3. Pemalsuan Borang (CSRF)

Serangan pemalsuan borang ialah kaedah serangan yang menggunakan identiti pengguna untuk menghantar permintaan berniat jahat tanpa mengetahuinya. Penyerang memalsukan permintaan dan melakukan tindakan yang menyalahi undang-undang dengan mendapatkan kelayakan log masuk pengguna.

Penyelesaian:

  1. Gunakan Token CSRF: Benamkan token yang dijana secara rawak dalam borang yang dikaitkan dengan sesi pengguna. Semasa penyerahan borang, sahkan kesahihan token. Kod sampel adalah seperti berikut:
<form action="submit.php" method="post">
  <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
  <!-- 其他表单元素 -->
  <input type="submit" value="提交">
</form>
session_start();

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  if ($_POST['csrf_token'] === $_SESSION['csrf_token']) {
    // 验证通过
  } else {
    // 验证失败,可能是CSRF攻击
  }
}
  1. Tetapkan pengesahan Perujuk: Sahkan sama ada sumber permintaan adalah sah dengan menyemak medan Perujuk pengepala permintaan HTTP. Hanya benarkan sumber tertentu mengakses halaman penyerahan borang untuk mengelakkan serangan pemalsuan permintaan merentas tapak. Kod sampel adalah seperti berikut:
if (isset($_SERVER['HTTP_REFERER']) && parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST) === 'example.com') {
  // 合法的来源,允许提交表单
} else {
  // 非法的来源,可能是CSRF攻击
}

Ringkasnya, isu keselamatan borang PHP terutamanya termasuk serangan skrip merentas tapak, serangan suntikan SQL dan isu pemalsuan borang. Melalui kaedah seperti penapisan input dan output, pra-penyusunan pertanyaan berparameter, dan penggunaan token CSRF, kaedah serangan biasa ini boleh dicegah dengan berkesan dan keselamatan pengguna dan tapak web dilindungi. Apabila membangunkan aplikasi PHP, adalah penting untuk mengingati keselamatan.

Atas ialah kandungan terperinci Soalan Lazim dan Penyelesaian untuk Keselamatan Borang 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