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

Kde použít mysql_real_escape_string, aby se zabránilo SQL Injection?

V podstatě pokaždé, když použijete nějaká nebezpečná data (uživatelský vstup, hodnota z databáze, souboru nebo externí webové stránky, tedy jakákoli data, která 100 % nejste jisti, že je bezpečný) v dotazu SQL, měli byste jej opustit pomocí mysql_real_escape_string . Upozorňujeme, že podle OWASP , tato funkce není bezpečná pro escapování dynamických názvů tabulek (ale to je mnohem méně běžné než „základní“ vkládání uživatelského vstupu).

Navrhuji, abyste se podívali na celý článek OWASP o SQL injection a také k procházení zbytku webu. Je to skvělý zdroj informací o zabezpečení webových aplikací.

IMO je preferovaným způsobem, jak zabránit vkládání SQL, použít připravené výpisy .

Pamatujte prosím, že pokud se rozhodnete použít mysql_real_escape_string() funguje pouze při použití uvnitř řetězce, který je oddělen uvozovkami. Nikdy jej nepoužívejte na žádné neuvedené hodnoty. To zahrnuje číselné hodnoty; místo toho ověřte, že uživatelský vstup je skutečně číselný.



  1. Jak SUBDATE() funguje v MariaDB

  2. Vytvářejte uložené procedury s PDO v PHP

  3. Jak seřadit pořadí výsledků podle časového razítka kromě jednoho z nich?

  4. Metoda org.postgresql.jdbc4.Jdbc4Connection.isValid(int) zatím není implementována