Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk mengelakkan serangan suntikan SQL menggunakan borang PHP

Bagaimana untuk mengelakkan serangan suntikan SQL menggunakan borang PHP

王林
Lepaskan: 2023-06-24 08:36:01
asal
778 orang telah melayarinya

Serangan suntikan SQL ialah jenis serangan rangkaian yang agak biasa pada masa ini Ia merujuk kepada membina pernyataan SQL yang tidak sah untuk mencapai operasi yang tidak sah pada pangkalan data, dengan itu mendapatkan maklumat sensitif, memusnahkan data, dsb. Dalam aplikasi PHP, borang digunakan sebagai cara untuk memasukkan data pada bahagian hadapan, dan data yang dimasukkan dalam borang mungkin akan digunakan sebagai komponen pernyataan pertanyaan SQL Oleh itu, mencegah serangan suntikan SQL adalah penting untuk keselamatan daripada permohonan itu. Artikel ini akan memperkenalkan cara menggunakan borang PHP untuk mencegah serangan suntikan SQL.

1. Apakah itu serangan suntikan SQL?

Serangan suntikan SQL bermakna penyerang memasukkan kod SQL hasad ke dalam borang web atau kotak input untuk menipu sistem pangkalan data untuk melaksanakan tujuan jahat. Oleh itu, penyerang boleh melihat, mengubah suai dan memadam data melalui serangan suntikan SQL, atau menyelesaikan lebih banyak tingkah laku berniat jahat melalui beberapa teknik lanjutan.

Serangan suntikan SQL kini meluas dalam banyak aplikasi. Ini kerana ramai pembangun tidak mengambil kira isu keselamatan yang disebabkan oleh kekurangan pengesahan input. Sebaik sahaja penyerang menemui kelemahan sedemikian, mereka boleh mengeksploitasinya dengan mudah untuk mendapatkan akses kepada maklumat sensitif, dengan itu mendapatkan data kritikal atau mengganggu pangkalan data aplikasi.

2. Cara menggunakan borang PHP untuk mencegah serangan suntikan SQL

  1. Penapisan dinamik input pengguna

Elakkan menggunakan kaedah penyambungan rentetan tanpa fikiran, tetapi sebaliknya Memproses data yang dimasukkan pengguna secara dinamik. Biasanya kita boleh menggunakan fungsi seperti "mysqli_real_escape_string()" untuk melarikan diri supaya data input tidak akan dilaksanakan sebagai pernyataan SQL dalam pangkalan data. Fungsi ini mempunyai keupayaan melarikan diri yang baik dan boleh mengendalikan semua aksara, tetapi dalam amalan ia mungkin menyebabkan kehilangan prestasi.

Kod contoh:

$con = mysqli_connect("localhost", "my_user", "my_password", "my_db");
if (! $con) {

c3b2f3cb849627bc282209b43922fee2

}

$nama pengguna = mysqli_real_escape_string($con, $_POST['username']);
$password = mysqli_real_escape_string($con, $_POST[' password']);
$sql = "SELECT * FROM users WHERE username='$username' and password='$password'";
$result = mysqli_query($con, $sql);
?>

  1. Menggunakan pernyataan PDO yang disediakan

Penyataan yang disediakan PDO menyediakan cara yang lebih selamat untuk mencegah serangan suntikan SQL. Menggunakan kenyataan yang disediakan boleh menghalang penyerang daripada membina pernyataan SQL berniat jahat akibat serangan suntikan SQL, memastikan keselamatan aplikasi.

Prinsip pernyataan yang disediakan: Gunakan ruang letak untuk menggantikan pembolehubah sebenar, dan kemudian masukkan parameter semasa fasa pelaksanaan. Oleh kerana pemegang tempat sedia ada ini telah diproses khas, masalah suntikan SQL dapat dielakkan. PDO menyediakan kelas PDOStatement, melalui antara muka kelas ini, prapemprosesan SQL boleh diselesaikan. Berikut ialah contoh:

$stmt = $dbh->prepare("SELECT * FROM users WHERE username=:username and password=:password");
$ stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $password);
$stmt->execute();
? >

  1. Dilarang melaksanakan berbilang kenyataan

Anda tidak boleh dengan mudah melaksanakan berbilang penyataan SQL meningkatkan risiko serangan suntikan SQL pada program . Oleh itu, jangan laksanakan berbilang pernyataan SQL bersama-sama.

Laksanakan hanya satu item pada satu masa dan semak keputusan pelaksanaan. Berikut ialah contoh menapis berbilang pernyataan:

if (substr_count($_GET['id'], ' ') > 0) {
die('Error ' ; Tapis menggunakan fungsi penapis yang disediakan dalam PHP.

Kod contoh:

    $nama pengguna = filter_var($_POST['nama pengguna'], FILTER_SANITIZE_STRING);$kata laluan = filter_var($_POST[' kata laluan'], FILTER_SANITIZE_STRING);
?>

Ringkasan:

Dalam era Internet hari ini, serangan suntikan SQL telah menjadi isu keselamatan yang mesti diberi perhatian dalam bidang keselamatan rangkaian. Oleh itu, untuk aplikasi PHP, terutamanya yang melibatkan pangkalan data, adalah penting untuk memahami dengan jelas dan menggunakan kaedah yang diterangkan di atas untuk memastikan keselamatan aplikasi. Apabila membangunkan aplikasi PHP, kita harus sentiasa mengingati risiko serangan suntikan SQL dan menggunakan borang PHP dengan betul untuk menghalangnya, dengan itu melindungi keselamatan aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk mengelakkan serangan suntikan SQL menggunakan borang PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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