Cara Melindungi Terhadap Suntikan SQL dengan Nama Jadual Dinamik
Seperti yang diserlahkan dalam perbincangan baru-baru ini, bergantung pada PDO atau mysql_real_escape_string untuk mengelakkan suntikan SQL dengan nama jadual dinamik tidak berkesan. Bertentangan dengan dakwaan bahawa langkah-langkah ini adalah "kualiti yang sangat buruk", memahami sebab ia gagal adalah penting untuk keselamatan yang teguh.
Penghadan mysql_real_escape_string
mysql_real_escape_string direka untuk melarikan diri data rentetan yang disertakan dalam petikan. Ia gagal mengendalikan nama jadual dinamik kerana ia tidak terlepas daripada aksara tanda belakang (`). Ini menimbulkan kelemahan keselamatan, kerana suntikan boleh dicapai dengan hanya menamatkan rentetan dengan tanda belakang.
Kekurangan Sokongan PDO
PDO juga tidak menyediakan sanitasi untuk dinamik nama jadual. Ini berpunca daripada fakta bahawa ia menganggap nama jadual sebagai pengecam, yang ia tidak terlepas secara automatik.
Amalan Terbaik
Untuk mengurangkan risiko ini, adalah dinasihatkan untuk mengelakkan menggunakan nama jadual dinamik apabila boleh. Walau bagaimanapun, jika ia tidak dapat dielakkan, pertimbangkan langkah berikut:
Dengan menggabungkan teknik ini ke dalam amalan pembangunan, pembangun boleh menghalang serangan suntikan SQL yang mengeksploitasi nama jadual dinamik dengan berkesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melindungi Pangkalan Data Saya Terhadap Suntikan SQL Apabila Menggunakan Nama Jadual Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!