Rumah > pangkalan data > tutorial mysql > Adakah mysql_real_escape_string() Benar-benar Boleh Dipercayai untuk Mencegah Suntikan SQL?

Adakah mysql_real_escape_string() Benar-benar Boleh Dipercayai untuk Mencegah Suntikan SQL?

Linda Hamilton
Lepaskan: 2024-12-04 15:04:11
asal
789 orang telah melayarinya

Is mysql_real_escape_string() Truly Reliable for Preventing SQL Injection?

Bolehkah Anda Bergantung pada mysql_real_escape_string() untuk Melindungi Pertanyaan Anda?

Walaupun penggunaan yang betul, kebimbangan telah dibangkitkan mengenai kebolehpercayaan mysql_real_escape_string ) dalam melindungi daripada suntikan SQL. Untuk menjelaskan isu ini, mari kita mendalami batasan fungsi dan kesesuaiannya untuk membuat kenyataan yang disediakan tersuai.

Kod Bukti dan Analisis:

Menurut MySQL rasmi dokumentasi, fungsi mysql_real_escape_string() dipengaruhi oleh set aksara sambungan. Untuk memastikan prestasi optimum, ia mencadangkan menggunakan mysql_set_character_set() dan bukannya SET NAMES atau SET CHARACTER SET pernyataan untuk mengubah suai set aksara.

#include <mysql/mysql.h>

int main() {
  // Create a MySQL connection
  MYSQL *conn = mysql_init(NULL);

  // Set the character set to UTF-8 using mysql_set_character_set()
  mysql_set_charset(conn, "utf8", MY_CS_PRIMARY);

  // Prepare a query using mysql_real_escape_string()
  char *query = mysql_real_escape_string(conn, "SELECT * FROM users");

  // Execute the query
  mysql_query(conn, query);

  // Release memory
  free(query);
  mysql_close(conn);

  return 0;
}
Salin selepas log masuk

Dalam kod ini, kami secara eksplisit menetapkan set aksara kepada UTF-8 menggunakan mysql_set_character_set(), memastikan bahawa mysql_real_escape_string() digunakan dengan pengekodan yang betul.

Kesimpulan:

Walaupun pengehadan tertentu mungkin wujud, mysql_real_escape_string() masih boleh digunakan untuk mencipta pernyataan yang disediakan asas. Dengan memastikan set aksara yang sesuai ditakrifkan menggunakan mysql_set_character_set(), anda boleh mengekalkan tahap keselamatan yang diingini terhadap suntikan SQL.

Atas ialah kandungan terperinci Adakah mysql_real_escape_string() Benar-benar Boleh Dipercayai untuk Mencegah Suntikan SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan