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

PHP:Zatímco smyčka nefunguje po úpravě SELECT pro prevenci vkládání SQL

Nelze svázat názvy sloupců a tabulek, pouze data. Musíte zadat tabulku a poté svázat pro '%calendar weekday%' .

$stmt = $conn->prepare("SELECT " . $selectLang . " FROM `TranslationsMain` WHERE `location` LIKE ? ORDER BY `sortOrder`, " . $selectedLang);
$stmt->bind_param('s', $calendar_weekday);

Pokud chcete používat dynamické názvy tabulek/sloupců, měli byste provést minimální whitelist těchto položek. Dynamický bílý seznam můžete vytvořit tak, že se zeptáte databáze, jaké sloupce jsou platné pro danou databázovou tabulku. Například:

SELECT `COLUMN_NAME` 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA` = `database_name`
AND `TABLE_NAME` = `table_name`

Všechny tyto informace můžete umístit do polí a poté zkontrolovat, zda jsou názvy tabulek / sloupců použité v dotazu v polích. Zvláštní pozornost by měla být věnována názvům tabulek a sloupců a ujistěte se, že pro tyto názvy nejsou použity žádné klíče/rezervovaná slova.

Nakonec použijte při volání hodnot pro dynamické dotazy zpětné značky kolem ověřených názvů tabulek / sloupců. To pokryje veškeré potenciální změny v seznamu klíčových/rezervovaných slov a poskytne další vrstvu ochrany.




  1. Jak dezinfikovat vstup do databáze ODBC?

  2. MySQL Připravené příkazy se seznamem proměnných s proměnnou velikostí

  3. jak vytvořím jedinečnou stránku php pro každý řádek v databázi mysql

  4. MySQL – vyberte, chcete-li načíst poslední datum a čas