Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy użycie mysqli_real_escape_string jest wystarczające do zabezpieczenia ciągu zapytania?

Jeśli używane wszędzie poprawnie, real_escape_string jest opcją. Ale rozważ następujący kod:

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

Bezpieczny czy nie? real_escape_ciąg może być używany tylko do zmiany znaczenia ciągów wewnątrz cudzysłowów. $page może być 1 OR id IN (2,3,4,5,6,7,8,9) → bez cudzysłowów, bez prawdziwej ucieczki. W tym przypadku pomocne może być przesyłanie do właściwego typu danych (int). Lepiej jest używać przygotowanych oświadczeń, nie są one tak łatwe do nadużycia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie pliku .php do generowania zrzutu MySQL

  2. yii2 jak używać wyszukiwania z sqldataProvider

  3. Jak zrobić odpowiednik limitu different?

  4. Jak wyświetlić kategorie, podkategorie, podkategorie na liście wyboru - php/mysql?

  5. CREATE VIEW WHERE SELECTid =VIEWrowID