Melangkaui mysql_real_escape_string: Memahami Perlindungan PDO
Apabila berhijrah daripada fungsi mysql_* ke PDO, ia mungkin kelihatan intuitif untuk mencari string_q_real yang setara untuk mysql_real ). Walau bagaimanapun, pendekatan PDO untuk melindungi daripada suntikan SQL pada asasnya berbeza.
Mengapa PDO::quote() Tidak Setara
Tidak seperti mysql_real_escape_string(), PDO::quote () tidak direka bentuk sebagai fungsi melarikan diri tujuan umum. Sebaliknya, ia berfungsi untuk tujuan tertentu dalam kenyataan yang disediakan. Penyataan yang disediakan sememangnya melindungi daripada suntikan SQL dengan mengendalikan pelarian secara automatik.
Pernyataan Disediakan PDO: Pelindung Sebenar
Penyata yang disediakan PDO menggunakan ruang letak (? dalam contoh kami) untuk mewakili data yang hendak dimasukkan. Data terikat kepada pemegang tempat secara berasingan, menghapuskan keperluan untuk melarikan diri secara manual. Contohnya, dalam kod yang disediakan:
$stmt->execute(array($_POST['color']));
$_POST['color'] terikat terus kepada pemegang tempat dan pemegang tempat dilindungi secara automatik oleh PDO. Akibatnya, menapis atau melarikan data menjadi tidak berguna.
Awas dan Amalan Terbaik
Walaupun PDO menyediakan perlindungan yang teguh terhadap suntikan SQL, masih terdapat langkah berjaga-jaga yang perlu diambil:
Dengan menerima kenyataan yang disediakan PDO dan menggunakannya dengan betul, pembangun boleh mencapai tahap perlindungan yang tinggi terhadap suntikan SQL tanpa bergantung pada fungsi warisan seperti mysql_real_escape_string().
Atas ialah kandungan terperinci Adakah PDO::quote() Penggantian untuk mysql_real_escape_string()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!