Command.Parameters.Add() tidak digunakan lagi: Menggunakan AddWithValue() dalam MySQL Query Injection
Penggunaan Command.Parameters.Add () dalam pertanyaan MySQL telah ditamatkan atas sebab keselamatan. Untuk memastikan keselamatan suntikan pertanyaan, adalah disyorkan untuk menggunakan kaedah AddWithValue() sebaliknya.
Berikut ialah cara untuk mengemas kini kod anda untuk menggunakan AddWithValue():
string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)"; command.CommandText = SQL; command.Parameters.AddWithValue("@mcUserName", mcUserNameNew); command.Parameters.AddWithValue("@mcUserPass", mcUserPassNew); command.Parameters.AddWithValue("@twUserName", twUserNameNew); command.Parameters.AddWithValue("@twUserPass", twUserPassNew);
Dengan menggunakan AddWithValue() , anda menghapuskan risiko memasukkan aksara khas atau arahan SQL yang berniat jahat dalam pertanyaan anda, dengan itu menghalang suntikan SQL serangan.
Pertanyaan SQL asal, yang membalut ruang letak dengan petikan tunggal, juga merupakan kelemahan keselamatan. Format yang betul untuk pertanyaan SQL dalam MySQL ialah menggunakan backticks (`) dan bukannya petikan tunggal untuk nama medan dan jadual. Oleh itu, pertanyaan SQL yang dikemas kini sepatutnya kelihatan seperti ini:
string SQL = "INSERT INTO `twMCUserDB` (`mc_userName`, `mc_userPass`, `tw_userName`, `tw_userPass`) VALUES (@mcUserName, @mcUserPass, @twUserName, @twUserPass)";
Atas ialah kandungan terperinci Mengapakah `AddWithValue()` Diutamakan Daripada `Add()` untuk Mencegah Suntikan SQL dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!