Mysql
 sql >> база данни >  >> RDS >> Mysql

mysql_real_escape_string() защитава ли НАПЪЛНО от SQL инжектиране?

Според Стефан Есер, "mysql_real_escape_string() [е] не е безопасно, когато SET NAMES се използва."

Неговото обяснение, от неговия блог :

SET NAMES обикновено се използва за превключване на кодирането от това, което е по подразбиране, към това, от което се нуждае приложението. Това се прави по начин, който mysql_real_escape_string не знае за това. Това означава, че ако превключите към някакво многобайтово кодиране, което позволява обратна наклонена черта като 2-ри 3-ти 4-ти... байт, ще се сблъскате с проблеми, защото mysql_real_escape_string не избяга правилно. UTF-8 е безопасен...

Безопасният начин за промяна на кодирането е mysql_set_charset , но това е достъпно само в новите версии на PHP

Той обаче споменава, че UTF-8 е безопасен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Кое е най-доброто съпоставяне за MySQL с PHP?

  2. Как да надстроите MySQL 5.5 до 5.6 на Ubuntu 14.04

  3. Navicat за MySQL

  4. Как да изпращате имейл от MySQL 5.1

  5. SQL подреждане по брой