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

Použití parametrů pro mysql_query

Za prvé, to, o čem to je, se nazývá SQL-Injection . Je to v podstatě jen možnost měnit dotazy na databázi pomocí uživatelského vstupu.

Podívejme se na příklad:

Dotaz:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Nyní přiřadíme VAR1 hodnotu:'; DROP TABLE *; -- A dostaneme:

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

Pomocí mysql_real_escape_string vypadalo by to takto:

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

mysql_real_escape_string 'secures' řetězec pro použití v rámci dotazu.

Ale nakonec měli byste přestat používat mysql_* celkem . Jsou zastaralé a považovány za nejisté, pokud jde o zabránění vkládání SQL nebo jiné způsoby temperování s dotazy.

Měli byste jednoduše přestat takto spojovat dotazy a začněte používat připravená prohlášení , které se nejen snadněji používají, ve výchozím nastavení zabraňují vkládání SQL, ale také mohou zlepšit rychlost vaší aplikace.

Pro PHP existují dvě rozšíření, která jsou navržena tak, aby uzavřela celý mysql_* otevřeno:

A říkám to znovu:Přestaňte prosím používat mysql_* !



  1. MariaDB a externí data

  2. Jak vytvořit počítané pole v dotazu Microsoft Access

  3. Použít e-mailovou adresu jako primární klíč?

  4. správný způsob vkládání dat s id jako automatický přírůstek do mysqli