Rumah >pangkalan data >tutorial mysql >Bilakah anda harus memilih `mysql_real_escape_string` berbanding `addslashes` untuk melarikan diri dari rentetan dalam PHP?

Bilakah anda harus memilih `mysql_real_escape_string` berbanding `addslashes` untuk melarikan diri dari rentetan dalam PHP?

Patricia Arquette
Patricia Arquetteasal
2024-11-17 13:08:021016semak imbas

When should you choose `mysql_real_escape_string` over `addslashes` for escaping strings in PHP?

mysql_real_escape_string vs addslashes: Memahami Perbezaan

Dalam PHP, fungsi mysql_real_escape_string dan addslashes sering digunakan untuk membersihkan rentetan. Walaupun mereka mempunyai beberapa persamaan, terdapat perbezaan utama antara mereka yang boleh memberi implikasi terhadap keselamatan dan integriti data anda.

tambahan sebatan

tambahan sebatan terlepas dari aksara tertentu yang bermasalah dalam pertanyaan SQL. Ini termasuk petikan tunggal ('), petikan berganda ("), garis miring ke belakang (), dan aksara NUL (null-bait). Dengan menambahkan garis miring ke belakang pada aksara ini, tanda miring menghalangnya daripada ditafsirkan sebagai aksara khas, meminimumkan risiko SQL kelemahan suntikan.

mysql_real_escape_string

mysql_real_escape_string ialah fungsi yang lebih khusus yang direka khusus untuk digunakan dengan MySQL Ia memanggil fungsi pustaka MySQL mysql_real_pendscapes_strings, yang mendahului rentetan belakang, yang mendahului rentetan belakang. daripada aksara yang termasuk, tetapi tidak terhad kepada, aksara yang dilarikan melalui sebatan tambahan ini termasuk x00 (sifar bait), n (linefeed), r (carriage return) dan x1a (end-of-file).

Perbezaan Utama

Perbezaan utama antara addslashes dan mysql_real_escape_string ialah set aksara yang dilepaskan daripada mysql_real_escape_string yang terlepas daripada julat aksara yang lebih luas, termasuk aksara kawalan dan akhir baris tertentu. aksara yang menambah garis miring tidak.

Selain itu, mysql_real_escape_string mengetahui keperluan khusus MySQL apabila melepaskan rentetan. Oleh itu, ia mungkin melaksanakan peraturan melarikan diri yang berbeza berdasarkan versi MySQL yang digunakan. Sebagai contoh, versi terbaru MySQL biasanya menggunakan petikan berganda untuk melepaskan petikan tunggal, manakala versi terdahulu menggunakan garis miring ke belakang. mysql_real_escape_string akan menyesuaikan diri dengan sewajarnya, memastikan rentetan dilepaskan dengan betul untuk versi MySQL tertentu yang sedang digunakan.

Kepentingan Aksara Tambahan yang Dilepaskan oleh mysql_real_escape_string

Karakter_escaped_real saya oleh mysql_l_real string tetapi bukan dengan tanda miring tambah termasuk aksara kawalan seperti x00 dan x1a. Aksara ini boleh menyebabkan akibat yang tidak diingini dalam pangkalan data, seperti menyebabkan kerosakan data atau penamatan sambungan pangkalan data.

Selain itu, melarikan diri aksara akhir baris (n dan r) boleh menjadi penting apabila menyimpan berbilang talian data. Jika tidak dilepaskan dengan betul, aksara ini boleh memperkenalkan pemisah baris atau pengembalian pengangkutan ke dalam data anda, yang berpotensi mengganggu kebolehbacaan dan kebolehgunaannya.

Kesimpulan

Walaupun addslashes menyediakan pelarian asas untuk aksara bermasalah biasa dalam pertanyaan SQL, mysql_real_escape_string ialah pilihan yang lebih komprehensif dan boleh dipercayai untuk melepaskan rentetan yang dimaksudkan untuk pangkalan data MySQL. Dengan mengambil kira keperluan khusus MySQL dan melarikan diri daripada set aksara yang berpotensi mengganggu yang lebih luas, mysql_real_escape_string meningkatkan keselamatan dan integriti data anda.

Atas ialah kandungan terperinci Bilakah anda harus memilih `mysql_real_escape_string` berbanding `addslashes` untuk melarikan diri dari rentetan dalam PHP?. 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