Mengapa Melarikan Diri Rentetan Tidak Boleh Dirundingkan dalam Pertanyaan Pangkalan Data
Apabila bekerja dengan pertanyaan pangkalan data, "melarikan diri dari rentetan" menjadi istilah biasa, namun kepentingan dan tekniknya selalunya sukar difahami. Artikel ini akan menjelaskan perkara yang diperlukan untuk melepaskan rentetan dan bagaimana ia memainkan peranan penting dalam melindungi pertanyaan SQL anda.
Meloloskan diri daripada rentetan ialah langkah perlindungan yang menangani kekaburan yang boleh timbul daripada menggunakan tanda petikan dalam rentetan nilai. Untuk menggambarkan, pertimbangkan rentetan berikut:
"Hello "World.""
Kehadiran petikan tunggal dan berganda dalam rentetan menimbulkan kekeliruan bagi jurubahasa, kerana ia menjadi tidak jelas di mana rentetan itu berakhir. Untuk menyelesaikan kekaburan ini, anda boleh sama ada menggunakan petikan tunggal di sekeliling keseluruhan rentetan:
'Hello "World."'
Atau, anda boleh "melarikan diri" petikan berganda dalam rentetan:
"Hello \"World.\""
Dengan melarikan diri petikan berganda dengan garis miring ke belakang, anda menunjukkan bahawa ia adalah sebahagian daripada nilai rentetan dan bukannya sempadan penanda.
Selain menyelesaikan kekaburan petikan, melarikan diri daripada rentetan adalah penting dalam pertanyaan pangkalan data. MySQL telah menyimpan kata kunci yang boleh bercanggah dengan nama medan atau data yang diserahkan pengguna. Untuk mengelakkan konflik sedemikian, anda boleh melampirkan istilah yang terlibat dalam tanda belakang:
SELECT `select` FROM myTable
Langkah mudah ini menghapuskan kekaburan yang disebabkan oleh menggunakan kata kunci simpanan sebagai nama lajur.
Untuk menyelaraskan proses melarikan diri dari rentetan, fungsi mysql_real_escape_string() digunakan secara meluas. Dengan menghantar data yang diserahkan pengguna melalui fungsi ini, anda boleh memastikan bahawa ia tidak akan menyebabkan sebarang masalah dalam pertanyaan anda.
// Query $query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'", mysql_real_escape_string($user), mysql_real_escape_string($password));
Ingat bahawa melarikan diri rentetan ialah aspek asas pengaturcaraan pangkalan data. Dengan melaksanakan teknik ini secara konsisten, anda boleh melindungi pertanyaan anda daripada kekaburan, konflik kata kunci dan potensi kelemahan keselamatan.
Atas ialah kandungan terperinci Mengapa String Escaping Penting untuk Pertanyaan Pangkalan Data Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!