Rumah >pangkalan data >tutorial mysql >Adakah `mysql_real_escape_string()` Benar-benar Selamat Terhadap Suntikan SQL?

Adakah `mysql_real_escape_string()` Benar-benar Selamat Terhadap Suntikan SQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-02 16:09:14479semak imbas

Is `mysql_real_escape_string()` Truly Secure Against SQL Injection?

Mengatasi Kelemahan mysql_real_escape_string()

Walaupun penggunaannya meluas dalam aplikasi PHP, sesetengah pihak telah menimbulkan kebimbangan mengenai kelemahan keselamatan mysql_string(real_escape) ). Fungsi ini direka bentuk untuk menghalang serangan suntikan SQL dengan melepaskan aksara khas dalam input pengguna.

Adakah mysql_real_escape_string() Sama sekali Tidak Mencukupi?

Dokumentasi MySQL C API mengakui potensi isu dengan mysql_real_escape_string(). Ia mencadangkan untuk mengelakkan penggunaan penyataan SET NAMES/SET CHARACTER SET untuk menukar set aksara sambungan. Sebaliknya, fungsi mysql_set_character_set() hendaklah dipanggil sebelum menggunakan mysql_real_escape_string().

Kod Bukti

Fungsi PHP mysql_set_charset() mengubah suai set aksara yang digunakan oleh mysql_real (). Ini digambarkan dalam coretan kod berikut:

<?php
// Connect to MySQL and select the database
$link = mysqli_connect("localhost", "user", "password", "database");

// Set the character set for the connection
mysql_set_charset($link, "utf8");

// Escape the input using mysql_real_escape_string()
$escaped_input = mysql_real_escape_string($link, $input);

// Use the escaped input in a SQL query
$query = "SELECT * FROM table WHERE field = '$escaped_input'";

Dengan mengikuti pendekatan ini, set aksara yang digunakan oleh mysql_real_escape_string() boleh ditetapkan secara eksplisit, memastikan aksara khas dilepaskan dengan betul.

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

Kenyataan:
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