Autor Zpráva
Tatranieux
Profil *
Zdravím,

je nějaká možnost, jak v .htaccess mít pravidlo pro odfiltrování různých sql injection částí v url? Např. /neco/if(now()=sysdate(),sleep(15),0) nebo /neco/'%20AND%202*3*8=6*8%20AND%20'jHxu'='jHxu?

Třeba pravidlo, kterým by se url se závorkama, apostrofama atd. přesměrovaly na hlavní stránku (příp. 404). Aktuálně mi takové url hází 503.

Případně existuje jiná ochrana?

Dík.
anonym_
Profil *
Tatranieux:
Případně existuje jiná ochrana?
Ano, řešením je ošetřovat vstupy na úrovni DB, příp. to nechat na nějakké databázové vrstvě.

Závorka v URL ničemu nevadí, nebezpečné jsou tvé nezabezpečené SQL dotazy.
Tatranieux
Profil *
Na úrovni DB, resp. PHP, to ošetřené mám přes strip_tags, mysqli_real_escape_string atd.

Mně jde o pravidlo v .htaccess.
anonym_
Profil *
Tatranieux:
Psal jsi o sql injection. Ta se v htaccess neřeší.

Jinak to, co hledas, je obyc. regular kontroluji i ty závorky, atd. Zkus a vrat se, pokud nebudeš vědet, jak dále.
juriad
Profil
I kdybys takto vyřešil GET, nevyřešíš tím odesílání formulářů pomocí POST.

Jediným správným řešením je ošetření vstupu na každém místě zvlášť podle kontextu. Jinak budeš ošetřovat boolean/číslo/řetězec/datum v SQL, jinak při generování HTML nebo JSON. Nepřemýšlej o tom jako o útoku nějakého hackera, ale naopak jako o své hrdosti, že aplikace se bude chovat správně za každé situace. To nejsou případy, které můžeš vyřešit později. Kvalitní programátor se nepozná podle rychlosti vývoje, ale spíše podle spolehlivosti kódu.

Escapování na každém místě stojí čas a je náchylné na chyby (záměrné: "adresa nikdy nebude obsahovat tento znak" i nechtěné), proto máme mnoho knihoven, které escapování řeší za nás. Používej něco modernějšího než nativní mysqli. Už se v PHP několik let nepohybuji, ale tehdy bývala oblíbená knihovna github.com/dg/dibi

Osobně neznám moc důvodů používat strip_tags - to zavání tím, že se snažíš o nějaké univerzální escapování. Pokud uživatel chce napsat něco se špičatými závorkami, tak mu ty špičaté závorky ulož a zobraz. Pokud špičaté závorky jsou zakázané - například v emailové adrese, proveď validaci, uživateli ukaž chybu a nesnaž se za uživatele opravovat to, co napsal.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0