Rumah > pembangunan bahagian belakang > tutorial php > PHP melaksanakan pengaturcaraan selamat: suntikan dan pertahanan SQL

PHP melaksanakan pengaturcaraan selamat: suntikan dan pertahanan SQL

王林
Lepaskan: 2023-06-18 10:40:01
asal
1190 orang telah melayarinya

Pengaturcaraan selamat dengan PHP: suntikan dan pertahanan SQL

Kini, Internet sedang berkembang pesat dan tapak web serta aplikasi menjadi semakin popular. Bersama-sama dengan ini datang ancaman keselamatan yang semakin meningkat. Salah satu kaedah serangan yang paling biasa ialah suntikan SQL. Serangan suntikan SQL menggunakan data input untuk mengubah suai atau mengusik arahan SQL, dan kemudian mengakses, mengubah suai dan memadamkan kandungan pangkalan data bahagian belakang. Artikel ini akan memperkenalkan prinsip dan langkah pertahanan serangan suntikan SQL, dan cara melaksanakan pengaturcaraan selamat dalam PHP.

Prinsip serangan suntikan SQL:

Prinsip serangan suntikan SQL adalah sangat mudah: penyerang menimpa data asal dengan data berniat jahat yang berniat jahat, dengan itu mengganggu dan memusnahkan proses pemprosesan data. Memandangkan pertanyaan SQL biasanya dibina oleh atur cara berdasarkan data yang dimasukkan oleh pengguna, penyerang boleh menambah aksara khas pada input untuk mengubah suai pertanyaan kepada hasil yang diingini oleh penyerang.

Berikut ialah contoh kod mudah:

$user = $_POST['user'];
$password = $_POST['password'];

//查询用户是否存在
$sql = "SELECT * FROM users WHERE username='$user' AND password='$password'";
$result = mysqli_query($conn, $sql);
Salin selepas log masuk

Jika penyerang memasukkan kod berikut:

' OR '1'='1
Salin selepas log masuk

, pernyataan pertanyaan SQL yang dibina akan menjadi:

SELECT * FROM users WHERE username='' OR '1'='1' AND password=''
Salin selepas log masuk

Ini akan menyebabkan pernyataan pertanyaan sentiasa mengembalikan nilai sebenar, membenarkan penyerang memintas pengesahan dan akses, mengubah suai atau memadam kandungan pangkalan data.

Langkah pertahanan:

Terdapat banyak cara untuk bertahan terhadap serangan suntikan SQL Berikut adalah beberapa langkah yang biasa digunakan:

  1. Gunakan pernyataan yang disediakan:
  2. .

Pernyataan yang disediakan ialah cara yang berkesan untuk menghalang serangan suntikan SQL. Ia menggunakan ruang letak untuk menggantikan pembolehubah dalam pernyataan pertanyaan ini secara automatik dilepaskan oleh program dan data diperiksa.

Berikut ialah kod sampel menggunakan pernyataan yang disediakan:

$user = $_POST['user'];
$password = $_POST['password'];

//使用预处理语句查询用户是否存在
$stmt = $conn->prepare("SELECT * FROM users WHERE username=? AND password=?");
$stmt->bind_param("ss", $user, $password);
$stmt->execute();
$result = $stmt->get_result();
Salin selepas log masuk
  1. Menapis input pengguna:

Sebelum membaca dan memanipulasi data input pengguna, Ia mesti ditapis dan disahkan. Anda boleh menggunakan fungsi terbina dalam PHP untuk menapis input pengguna, seperti htmlspecialchars() atau mysqli_real_escape_string().

Berikut ialah contoh kod yang menggunakan fungsi mysqli_real_escape_string() untuk menapis input pengguna:

$user = mysqli_real_escape_string($conn, $_POST['user']);
$password = mysqli_real_escape_string($conn, $_POST['password']);

//查询用户是否存在
$sql = "SELECT * FROM users WHERE username='$user' AND password='$password'";
$result = mysqli_query($conn, $sql);
Salin selepas log masuk
  1. Minimumkan input pengguna:

Kurangkan apa yang pengguna perlu memasukkan Data boleh mengurangkan risiko serangan suntikan SQL. Anda boleh menggunakan nilai lalai borang, menu lungsur, butang radio, dsb. untuk mengurangkan input pengguna, dan anda juga boleh mengehadkan panjang input pengguna.

Dalam aplikasi praktikal, adalah disyorkan untuk tidak menggunakan fungsi berkaitan pangkalan data untuk menapis atau mengesahkan data input pengguna. Kerana fungsi ini mungkin gagal disebabkan oleh kunci pangkalan data atau isu lain, yang membawa kepada kelemahan keselamatan.

Kesimpulan:

Serangan suntikan SQL ialah kaedah serangan rangkaian biasa yang boleh menyebabkan akibat yang serius dalam tempoh yang singkat. Walau bagaimanapun, serangan suntikan SQL boleh dipertahankan dengan berkesan dengan menggunakan pernyataan yang disediakan, menapis input pengguna dan meminimumkan input pengguna. Kekal selamat dalam talian dengan sentiasa berwaspada dan sentiasa mengemas kini pengetahuan anda.

Atas ialah kandungan terperinci PHP melaksanakan pengaturcaraan selamat: suntikan dan pertahanan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan