Rumah > pembangunan bahagian belakang > tutorial php > Adakah addslashes() Pertahanan yang Boleh Dipercayai Terhadap Serangan Suntikan SQL dalam PHP?

Adakah addslashes() Pertahanan yang Boleh Dipercayai Terhadap Serangan Suntikan SQL dalam PHP?

Linda Hamilton
Lepaskan: 2024-12-04 00:27:14
asal
290 orang telah melayarinya

Is addslashes() a Reliable Defense Against SQL Injection Attacks in PHP?

Memahami SQL Injections melalui addslashes()

Dalam PHP, addslashes() selalunya dibandingkan dengan mysql_real_escape_string sebagai langkah keselamatan terhadap suntikan SQL. Walaupun kedua-duanya boleh membantu dalam melindungi data, contoh menunjukkan bahawa addslashes() mungkin membenarkan eksploitasi.

Salah satu kaedah serangan boleh berlaku adalah dengan memanipulasi addslashes() untuk memasukkan backslash ke dalam aksara multibait. Akibatnya, peranan pelindung garis serong ke belakang dinetralkan dan pertanyaan berniat jahat boleh dibina.

Sebagai contoh, pertimbangkan pertanyaan berikut menggunakan tanda sembang():

$query = "SELECT * FROM users WHERE name = '" . addslashes($_GET['name']) . "'";
Salin selepas log masuk

Seorang penyerang boleh lulus yang berikut sebagai parameter "nama":

'John Doe' OR 1 = 1 --
Salin selepas log masuk

Biasanya, petikan tunggal akan dilepaskan oleh addslash(). Walau bagaimanapun, dalam kes ini, penyerang bergantung pada aksara berbilang bait "Ö". Apabila "Ö" dikodkan dalam UTF-8, ia terdiri daripada tiga bait: 0xC3, 0xB6 dan 0x9C.

Addslashes() mentafsirkan input penyerang sebagai:

'John Doe' ÖR 1 \= 1 --
Salin selepas log masuk

Dengan garis miring terbalik diletakkan dalam aksara multibait, addslashes() menganggapnya sebagai kesinambungan aksara bukannya simbol melarikan diri. Akibatnya, pertanyaan SQL tidak dilepaskan dengan betul, membolehkan penyerang memintas langkah keselamatan.

Adalah penting untuk ambil perhatian bahawa jenis serangan ini hanya terpakai pada pengekodan aksara yang wujudnya aksara berbilangbait yang berakhir dengan 0x5c (karakter garis miring ke belakang ). UTF-8, bagaimanapun, tidak mematuhi ini, mengurangkan kerentanannya kepada vektor serangan khusus ini.

Atas ialah kandungan terperinci Adakah addslashes() Pertahanan yang Boleh Dipercayai Terhadap Serangan Suntikan SQL dalam 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan