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

Użycie parametrów dla mysql_query

Po pierwsze, nazywa się to SQL-Injection . Jest to po prostu możliwość zmiany zapytań w bazie danych za pomocą danych wejściowych użytkownika.

Spójrzmy na przykład:

Zapytanie:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Teraz przypiszemy VAR1 wartość:'; DROP TABLE *; -- A my otrzymamy:

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

Z mysql_real_escape_string wyglądałoby to tak:

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string „zabezpiecza” ciąg do użycia w zapytaniu.

Ale w końcu powinieneś przestać używać mysql_* razem . Są przestarzałe i uważane za niebezpieczne, jeśli chodzi o zapobieganie wstrzykiwaniu SQL lub innym sposobom łagodzenia zapytań.

Powinieneś po prostu przestać łączyć zapytania w ten sposób i zacznij używać przygotowanych wyciągów , które nie tylko są łatwiejsze w użyciu, domyślnie zapobiegają wstrzykiwaniu SQL, ale także mogą poprawić szybkość Twojej aplikacji.

Dla PHP istnieją dwa rozszerzenia, które mają na celu zamknięcie całego mysql_* otwarte:

I powtarzam to jeszcze raz:Przestań używać mysql_* !



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysqldump uruchomiony przez cron i zabezpieczenia hasłem

  2. Nieprawidłowa wartość ciągu podczas próby wstawienia UTF-8 do MySQL za pośrednictwem JDBC?

  3. Wkładki wsadowe z PHP

  4. Jak włączyć logi powolnych zapytań w AWS RDS MySQL?

  5. Jak znaleźć brakującą wartość między dwiema tabelami MySQL?