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

Czy mysql_real_escape_string() W PEŁNI chroni przed wstrzyknięciem SQL?

Według Stefana Essera, "mysql_real_escape_string() [jest] nie jest bezpieczny, gdy SET NAMES jest używany."

Jego wyjaśnienie, z jego bloga :

SET NAMES jest zwykle używany do przełączania kodowania z domyślnego na wymagane przez aplikację. Odbywa się to w sposób, który mysql_real_escape_string nie wie o tym. Oznacza to, że jeśli przełączysz się na kodowanie wielobajtowe, które pozwala na odwrotny ukośnik jako 2. 3. 4.… bajt, wpadniesz w kłopoty, ponieważ mysql_real_escape_string nie ucieka poprawnie. UTF-8 jest bezpieczny…

Bezpiecznym sposobem na zmianę kodowania jest mysql_set_charset , ale jest to dostępne tylko w nowych wersjach PHP

Wspomina jednak, że UTF-8 jest bezpieczny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Połączyć się z kontenerem Docker MySQL z hosta lokalnego?

  2. Jak usunąć użytkownika bazy danych MySQL w cPanel?

  3. Jak wyświetlić bieżące połączenia w MySQL Workbench za pomocą GUI

  4. Co to znaczy, gdy MySQL jest w stanie Wysyłanie danych?

  5. ustawianie globalnego trybu sql_mode w mysql