Rumah  >  Artikel  >  pembangunan bahagian belakang  >  php sql melarikan diri

php sql melarikan diri

WBOY
WBOYasal
2023-05-07 09:43:06700semak imbas

PHP dan SQL adalah kedua-dua bahasa pengaturcaraan yang biasa digunakan untuk memproses data dalam aplikasi web. Apabila mengendalikan data input pengguna, perhatian mesti diberikan kepada keselamatan data. Pengguna boleh cuba menyuntik kod hasad atau pertanyaan SQL untuk mengakses atau mencuri maklumat sensitif. Untuk mengelakkan perkara ini berlaku, data yang dimasukkan mesti dilepaskan untuk menghapuskan sebarang kemungkinan risiko. Artikel ini akan memperkenalkan data melarikan diri dalam PHP dan SQL.

  1. Data Escape dalam PHP

Dalam PHP, terdapat dua fungsi biasa yang boleh digunakan untuk melarikan data input, iaitu addslashes() dan mysqli_real_escape_string(). Fungsi

1.1 addslashes()

addslashes() boleh melarikan diri daripada aksara khas seperti tanda petikan dan garis miring ke belakang dalam rentetan untuk mengelakkan masalah dalam pangkalan data. Sebagai contoh, jika pengguna cuba memasukkan I'm a hacker, rentetan ini akan menyebabkan ralat sintaks PHP kerana ia memecahkan struktur petikan pernyataan SQL. Dengan menggunakan addslashes(), rentetan ini boleh dilepaskan ke I'm a hacker supaya ia boleh dihuraikan dengan betul. Kodnya adalah seperti berikut:

$username = "I'm a hacker";
$username = addslashes($username);

1.2 mysqli_real_escape_string()

mysqli_real_escape_string() fungsi ialah fungsi berkaitan sambungan yang boleh digunakan untuk melepaskan aksara khas dalam pernyataan SQL. Sebelum menggunakan fungsi ini, sambungan ke pangkalan data mesti dibuat. Berikut ialah kod sampel:

$conn = mysqli_connect($host, $user, $password, $dbname);
$string = "I'm a hacker";
$string = mysqli_real_escape_string($conn, $string);

Apabila menggunakan mysqli_real_escape_string() untuk melepaskan rentetan, sentiasa kaitkan dengan membuat sambungan ke pangkalan data. Jika tidak, melarikan diri tidak boleh dilakukan.

  1. Data yang melarikan diri dalam pernyataan SQL

Dalam pernyataan SQL, serangan suntikan boleh dielakkan dengan menggunakan pertanyaan berparameter. Menggunakan pertanyaan berparameter, data boleh ditukar kepada pemalar, dengan itu mengelakkan suntikan kod berniat jahat.

2.1 Pertanyaan berparameter

Pertanyaan berparameter merujuk kepada menggunakan parameter dalam pernyataan SQL dan bukannya nilai data sebenar. Parameter ini hanya terikat kepada nilai sebenar apabila pernyataan itu dilaksanakan. Dalam PHP, anda boleh menggunakan objek PDO untuk melakukan pertanyaan berparameter, contohnya:

$pdo = new PDO('mysql:host=localhost;dbname=test', $user, $password);
$stmt = $pdo->prepare('SELECT * FROM users WHERE username = :username');
$stmt->execute(['username' => $username]);

Dalam contoh ini, titik bertindih (:) digunakan untuk mencipta ruang letak untuk nama pengguna. Kemudian, gunakan kaedah execute() untuk mengikat pemegang tempat kepada nilai nama pengguna sebenar.

2.2 Penyata Disediakan

Cara lain untuk menghalang suntikan SQL ialah menggunakan pernyataan yang disediakan. Dalam kes ini, semua pembolehubah dalam pertanyaan SQL dianggap sebagai parameter dan dilepaskan sebelum pertanyaan dilaksanakan. Dalam PHP, anda boleh menggunakan sambungan mysqli untuk melaksanakan pernyataan yang disediakan, contohnya:

$conn = mysqli_connect($host, $user, $password, $dbname);
$stmt = mysqli_prepare($conn, 'SELECT * FROM users WHERE username = ?');
mysqli_stmt_bind_param($stmt, 's', $username);
mysqli_stmt_execute($stmt);

Dalam contoh ini, fungsi mysqli_prepare() digunakan untuk menyediakan pernyataan pertanyaan dan mengikat semua parameter sebelum pelaksanaan. Gunakan s jenis parameter untuk mengikat pembolehubah rentetan. Kemudian, gunakan fungsi mysqli_stmt_execute() untuk melaksanakan pertanyaan.

Untuk meringkaskan, pelarian data adalah penting untuk mengelakkan serangan suntikan SQL dalam aplikasi web. Dalam PHP, anda boleh menggunakan fungsi addslashes() atau mysqli_real_escape_string() untuk melepaskan rentetan. Dalam pernyataan SQL, anda boleh menggunakan pertanyaan berparameter atau pernyataan yang disediakan untuk mengelakkan serangan suntikan. Sama ada cara, anda boleh meningkatkan keselamatan aplikasi web anda.

Atas ialah kandungan terperinci php sql melarikan diri. 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