Bila Perlu Mengelakkan Pernyataan Disediakan
Amalan biasa untuk mencegah serangan suntikan SQL ialah menggunakan pernyataan yang disediakan. Walau bagaimanapun, terdapat keadaan di mana pernyataan yang disediakan mungkin bukan pilihan yang paling sesuai.
Dalam kes khusus ini, pembangun sedang merekayasa semula aplikasi web yang menggunakan pertanyaan asas seperti SELECT foo,bar FROM baz WHERE quux = ? PESANAN MENGIKUT bar LIMIT 1. Pertanyaan ini dilaksanakan sekali sahaja setiap hit halaman. Selain itu, pembangun berada dalam persekitaran yang dihoskan dan lebih suka mengelakkan beban pelayan tambahan.
Memandangkan pertimbangan ini, pembangun mempersoalkan sama ada menggunakan pernyataan yang disediakan adalah perlu.
Jawapan
Untuk menentukan sama ada pernyataan yang disediakan perlu dielakkan, adalah penting untuk mempertimbangkan bahawa pernyataan yang disediakan menawarkan dua faedah utama:
Dalam senario khusus ini, pembangun tidak mengambil berat tentang penggunaan semula pertanyaan kerana setiap pertanyaan dilaksanakan hanya sekali setiap hit halaman. Oleh itu, faedah prestasi penggunaan semula pertanyaan boleh diabaikan.
Walau bagaimanapun, aspek pencegahan suntikan tetap menjadi kebimbangan. Untuk menangani perkara ini, pembangun boleh mempertimbangkan untuk menggunakan kenyataan yang disediakan yang dicontohi. Pernyataan ini menggunakan fungsi PHP untuk mengendalikan petikan dan penggantian parameter, memberikan perlindungan terhadap suntikan SQL tanpa overhed berbilang perjalanan pergi-balik pangkalan data.
Syor
Berdasarkan maklumat dengan syarat, adalah dinasihatkan untuk mengelak daripada menggunakan kenyataan yang disediakan dan sebaliknya memilih kenyataan yang disediakan yang dicontohi. Pendekatan ini menyediakan perlindungan terhadap suntikan SQL sambil mengelakkan perjalanan pergi-balik pangkalan data tambahan yang akan ditanggung oleh kenyataan yang disediakan sebenar.
Atas ialah kandungan terperinci Perlukah Penyata Disediakan Dielakkan untuk Pertanyaan Perlaksanaan Tunggal dalam Persekitaran Dihoskan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!