sql >> Databáze >  >> RDS >> Mysql

Chrání mysql_real_escape_string() PLNĚ před SQL injection?

Podle Stefana Essera "mysql_real_escape_string() [is] není bezpečné, když SET NAMES se používá."

Jeho vysvětlení, z jeho blogu :

SET NAMES se obvykle používá k přepnutí kódování z výchozího na to, co aplikace potřebuje. To se děje způsobem, že mysql_real_escape_string o tomhle neví. To znamená, že pokud přejdete na nějaké vícebajtové kódování, které umožňuje zpětné lomítko jako 2. 3. 4.… bajt, dostanete se do problémů, protože mysql_real_escape_string neuniká správně. UTF-8 je bezpečné…

Bezpečným způsobem změny kódování je mysql_set_charset , ale to je k dispozici pouze v nových verzích PHP

Zmiňuje však, že UTF-8 je bezpečné.



  1. Použití Pythonu a MySQL v procesu ETL

  2. Vysvětlení operátora MariaDB UNION

  3. Chyba SSMS 2016 při importu Azure SQL v12 bacpac:hlavní klíče bez hesla nejsou podporovány

  4. Ukládání dat v MySQL jako JSON