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

Musím se chránit před vkládáním SQL, pokud jsem použil rozevírací seznam?

Ano, před tím se musíte chránit.

Dovolte mi ukázat vám proč pomocí vývojářské konzole Firefoxu:

Pokud tato data nevyčistíte, vaše databáze bude zničena. (Toto nemusí být zcela platný příkaz SQL, ale doufám, že jsem pochopil svůj názor.)

To, že jste omezili dostupné možnosti v rozbalovací nabídce neznamená omezili jste data, která mohu odeslat na váš server.

Pokud jste se pokusili toto chování dále omezit pomocí chování na vaší stránce, mezi mé možnosti patří deaktivace tohoto chování nebo pouze zapsání vlastního požadavku HTTP na váš server, který stejně napodobuje odeslání formuláře. Existuje nástroj s názvem curl používá se přesně k tomu a myslím příkaz k odeslání této injekce SQL by stejně vypadal nějak takto:

curl --data "size=%27%29%3B%20DROP%20TABLE%20*%3B%20--"  http://www.example.com/profile/save

(Toto nemusí být zcela platný příkaz curl, ale znovu doufám, že jsem pochopil svůj názor.)

Takže zopakuji:

NIKDY nedůvěřujte uživatelskému vstupu. VŽDY se chraňte.

Nepředpokládejte, že jakýkoli uživatelský vstup je někdy bezpečný. Je potenciálně nebezpečný, i když přichází jiným způsobem než prostřednictvím formuláře. Nic z toho není nikdy dostatečně důvěryhodné, abyste se zřekli ochrany před injekcí SQL.



  1. Jak obnovit jednu tabulku MySQL pomocí mysqldump?

  2. Jedinečné omezení na kombinaci dvou sloupců?

  3. Rozdíly mezi utf8 a latin1

  4. PostgreSQL:Jak nastavím search_path na uživatelské úrovni?