Rumah pembangunan bahagian belakang tutorial php Strategi keselamatan bentuk PHP: Gunakan pernyataan PDO yang disediakan untuk mengelakkan suntikan SQL

Strategi keselamatan bentuk PHP: Gunakan pernyataan PDO yang disediakan untuk mengelakkan suntikan SQL

Jun 24, 2023 am 10:21 AM
php pdo suntikan sql

Dengan perkembangan Internet, borang telah menjadi salah satu elemen tapak web yang sangat diperlukan. Walau bagaimanapun, keselamatan bentuk yang tidak sempurna dengan mudah boleh membawa kepada pelbagai kelemahan keselamatan, yang paling biasa ialah suntikan SQL. Walaupun bahasa PHP mudah dan mudah dipelajari, semasa memproses borang, anda mesti memberi perhatian kepada strategi keselamatan tertentu untuk mengelakkan isu keselamatan dengan berkesan seperti suntikan SQL.

SQL injection ialah kaedah serangan yang membolehkan penyerang mengeksploitasi kelemahan aplikasi dan memasukkan kod hasad ke dalam pangkalan data. Penyerang mengubah tingkah laku aplikasi dengan menyerahkan data berniat jahat, dengan itu mengakses dan mengubah suai maklumat dalam pangkalan data. Jika kami tidak mengambil sebarang tindakan balas keselamatan, borang di tapak web kami terdedah kepada serangan suntikan SQL.

Dalam PHP, kami boleh menggunakan beberapa strategi yang berkesan untuk menghalang suntikan SQL. Antaranya, menggunakan kenyataan PDO yang disediakan boleh meningkatkan keselamatan borang dan menghalang serangan suntikan SQL. PDO (Objek Data PHP) ialah lanjutan daripada PHP Ia bukan sahaja menyokong pelbagai jenis pangkalan data, tetapi juga menyediakan fungsi pernyataan yang disediakan yang boleh menghalang suntikan SQL dengan berkesan.

Bagaimana untuk menggunakan pernyataan PDO yang disediakan untuk meningkatkan keselamatan borang? Mari perkenalkan dari aspek berikut:

1 Sambung ke pangkalan data

Untuk menggunakan pernyataan prapemprosesan PDO, anda perlu mewujudkan sambungan dengan pangkalan data. Apabila menyambung ke pangkalan data, kita perlu memberi perhatian kepada isu berikut:

(1) Sebelum mewujudkan sambungan dengan pangkalan data, anda perlu mencipta objek PDO. Apabila mencipta objek PDO, anda perlu memasukkan maklumat sambungan pangkalan data, termasuk jenis pangkalan data, nama hos, nama pengguna, kata laluan, dsb.

Sebagai contoh, jika kita ingin menyambung ke pangkalan data MySQL, kodnya adalah seperti berikut:

$dsn = 'mysql:host=localhost;dbname=testdb';
$username = 'root';
$password = '123456';

try {
    $dbh = new PDO($dsn, $username, $password);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}
Salin selepas log masuk

(2) Apabila membuat sambungan dengan pangkalan data, mod pengendalian ralat perlu ditetapkan. PDO menyediakan tiga mod pengendalian ralat: mod senyap, mod amaran dan mod pengecualian. Apabila menggunakan pernyataan yang disediakan PDO, kami biasanya menggunakan mod pengecualian, yang boleh mengendalikan ralat dengan lebih mudah.

Sebagai contoh, kami boleh menetapkan mod pengendalian ralat PDO kepada mod pengecualian melalui kod berikut:

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Salin selepas log masuk

2 Tulis pernyataan yang disediakan

Melalui pernyataan yang disediakan PDO, kami boleh Pernyataan dan parameter SQL yang akan dilaksanakan diproses secara berasingan untuk mengelakkan suntikan SQL. Untuk menulis pernyataan yang disediakan, kita boleh mengikuti langkah berikut:

(1) Gantikan pembolehubah dalam pernyataan SQL dengan "?"" (2) Susun menggunakan kaedah sediakan Pernyataan SQL, jana objek pernyataan yang disediakan;

(3) Ikat parameter dan ruang letak yang perlu diikat pada objek pernyataan yang disediakan dalam surat-menyurat satu dengan satu.

Sebagai contoh, kami ingin memasukkan sekeping data ke dalam pangkalan data, kodnya adalah seperti berikut:

$name = $_POST['name'];
$age = $_POST['age'];

$sql = "INSERT INTO student (name, age) VALUES (?, ?)";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $age);
$stmt->execute();
Salin selepas log masuk

3 Ikat parameter

Apabila menggunakan pernyataan prapemprosesan PDO, anda perlu mengikat parameter tertentu dan ruang letak yang diperlukan terikat pada objek pernyataan yang disediakan dalam surat-menyurat satu dengan satu. PDO menyediakan dua kaedah mengikat parameter: bindParam dan bindValue.

Kaedah bindParam menerima tiga parameter: kedudukan pemegang tempat, pembolehubah terikat dan jenis data pembolehubah.

Sebagai contoh, kita ingin mengikat pembolehubah rentetan, kodnya adalah seperti berikut:

$stmt->bindParam(1, $name, PDO::PARAM_STR);
Salin selepas log masuk

Kaedah bindValue menerima dua parameter: kedudukan pemegang tempat dan nilai terikat.

Sebagai contoh, kami ingin mengikat pembolehubah integer, kodnya adalah seperti berikut:

$stmt->bindValue(2, $age, PDO::PARAM_INT);
Salin selepas log masuk

Dengan mengikat parameter, kami boleh memastikan bahawa data input tidak akan dihuraikan sebagai sebahagian daripada SQL kenyataan, dengan itu Berkesan menghalang suntikan SQL.

4. Memproses hasil pertanyaan

Apabila kami melakukan operasi pertanyaan, kami perlu memproses hasil pertanyaan. Apabila menggunakan pernyataan prapemprosesan PDO, kami boleh memproses hasil pertanyaan dalam dua kaedah berikut:

(1) Gunakan kaedah fetchAll untuk mendapatkan tatasusunan semua hasil pertanyaan

Sebagai contoh, kami mahu untuk mendapatkan semua Untuk maklumat pelajar, kodnya adalah seperti berikut:

$stmt = $dbh->query('SELECT * FROM student');
$result = $stmt->fetchAll();
Salin selepas log masuk

(2) Gunakan kaedah ambil untuk mendapatkan baris data daripada hasil pertanyaan.

Sebagai contoh, kami ingin mendapatkan maklumat pelajar baris demi baris, kodnya adalah seperti berikut:

$stmt = $dbh->query('SELECT * FROM student');
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo $row['name'] . ' - ' . $row['age'] . '<br>';
}
Salin selepas log masuk

Ringkasan

Ringkasnya, keselamatan borang PHP tidak boleh diabaikan apabila kami membangunkan soalan laman web. Dengan menggunakan pernyataan yang disediakan oleh PDO, kami boleh mengelakkan isu keselamatan seperti suntikan SQL dan meningkatkan keselamatan borang dengan berkesan. Pada masa yang sama, semasa menulis borang PHP, kita juga harus memberi perhatian kepada aspek lain dalam strategi keselamatan, seperti pengesahan data, menapis aksara haram, dsb., untuk melindungi tapak web kami daripada serangan berniat jahat.

Atas ialah kandungan terperinci Strategi keselamatan bentuk PHP: Gunakan pernyataan PDO yang disediakan untuk mengelakkan suntikan SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini 7 Fungsi PHP Saya Menyesal Saya Tidak Tahu Sebelum ini Nov 13, 2024 am 09:42 AM

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Jelaskan JSON Web Tokens (JWT) dan kes penggunaannya dalam PHP API. Apr 05, 2025 am 12:04 AM

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Program PHP untuk mengira vokal dalam rentetan Program PHP untuk mengira vokal dalam rentetan Feb 07, 2025 pm 12:12 PM

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Terangkan pengikatan statik lewat dalam php (statik: :). Terangkan pengikatan statik lewat dalam php (statik: :). Apr 03, 2025 am 12:04 AM

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apakah kaedah Magic PHP (__construct, __destruct, __call, __get, __set, dll) dan menyediakan kes penggunaan? Apr 03, 2025 am 12:03 AM

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.

See all articles