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

Odfiltrování dotazů MySQL v PHP

Jediným způsobem je správně uniknout datům odeslaným uživatelem. Jiní poukázali na některé způsoby, jak toho dosáhnout.

Existuje další způsob:připravená prohlášení a zástupné symboly. Připravená prohlášení podporuje každý moderní Rozhraní databáze PHP, včetně mysqli a CHOP .

Použijme PDO jako ukázku. Řekněme, že jsme chtěli aktualizovat část dat v tabulce foo zadané uživatelem.

$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

Proměnné v poli předané do execute nahraďte v dotazu zástupné symboly otazníku. Když k tomu dojde, jsou automaticky uvozeny a uvozeny . Nemusíte je ručně uvádět, abyste je bezpečně vložili do databáze!

Na druhou stranu je stále budete muset filtrovat pro neočekávaný obsah, jako je HTML, Javascript, písmena, kde očekáváte čísla atd. Zabezpečení dat pro vložení do databáze je jen polovina bitvy .



  1. Jak UPDATE a SELECT zároveň

  2. Streamování MySql ResultSet s pevným počtem výsledků najednou

  3. Nejlepší způsob, jak zvládnout vztahy Many-to-Many v PHP MySQL

  4. Provozování datového skladu na PostgreSQL