Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah menggunakan mysqli_real_escape_string cukup untuk mengamankan string kueri saya?

Jika digunakan di mana-mana dengan benar, real_escape_string adalah opsi. Tetapi perhatikan kode berikut:

$page = $_GET['page'];
$sql = 'SELECT `name` FROM `user` WHERE `id` = ' . mysqli_real_escape_string($page);

Aman atau tidak? real_escape_string hanya dapat digunakan untuk keluar dari string di dalam tanda kutip. $page bisa 1 OR id IN (2,3,4,5,6,7,8,9) → tidak ada tanda kutip, tidak ada pelarian nyata. Casting ke tipe data yang benar (int) mungkin membantu dalam kasus ini. Sebaiknya Anda menggunakan pernyataan yang sudah disiapkan, agar tidak mudah disalahgunakan.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. hitung tanpa grup

  2. Pendekatan terbaik MySQL untuk normalisasi db, hubungan, dan kunci asing

  3. apakah ini praktik yang baik untuk menggunakan mysql_free_result($result)?

  4. PHP mysqli() tidak berfungsi

  5. Bagaimana Anda mengatur pager default untuk klien MySQL?