Autor Zpráva
překvapen
Profil *
Dobrý den. Zrovna řeším ve scriptech důkladnou ochranu proti SQL injektoru a chtěl jsem si sám databázi heknout, ale vůbec se mi to nedaří, čili jsem vyechoval výstup a zjistil jsem že se mi před každou uvozovkou ' udělá sám ochraný snak \ ... nemá někdo s tím zkušenost? Protože já jsem žádný mysql_real_escape_string nezapínal totiž. Nebo přesněji nezapínal jsem ho v indexu ani na stránce na které jsem ten hack zkusil. zkoušel jsem si tu stránku heknou i mimo index a ve výstupu mám stále

a\'; drop table chat; --

i když jsem zadal

a'; drop table chat; --

mohl by mi to prosím někdo vysvětlit nějak nebo něco? Děkji.


Jo ještě jsem chtěl dodat že nepoužívám žádný framework
Kajman
Profil
Zkontrolujte si nastavení magic quotes.
Camo
Profil
A vypneš si to v .htaccess takto: http://www.abeautifulsite.net/blog/2007/10/disabling-magic-quotes-gpc-using-an-htaccess-file/
překvapen
Profil *
Aha děkuji to bude ono. Takže z toho plyně že v php před verzí 5.3.0 php automaticky nastavuje tuhle ochranu. Já mám verzi 5.2.6. Z toho tedy plyne že to mám v tom případě vše ochráněné? Protože to se mi logicky nezná když se od toho u verze 5.3 už ustoupilo. Znamená to že bych měl přejít na novější verzi a ochránit každý vstup a nebo to mohu nechat takto?


* Protože to se mi logicky nezdá


Camo : no ono to právě dělá to co chci. Já to nechci vypínat... spíše mě zajímá jestli to stačí jako ochrana.
Camo
Profil
překvapen:
Ako ochrana by to stačilo, ale robí to problémy inde. Takže normálne sa to vypína a escapuje sa len to čo ide do databázy a urob to tak aj ty....
Joker
Profil
překvapen:
Takže z toho plyně že v php před verzí 5.3.0 php automaticky nastavuje tuhle ochranu.
Na to automaticky nastavuje bych rozhodně nesázel.
Závisí to na nastavení magic_quotes_gpc. I když podle manuálu je výchozí hodnota zapnuto, nejsem si jistý, jestli to tak u všech verzí PHP doopravdy je.
Každopádně v praktických instalacích PHP třeba na webhostingu a tak (když teda půjde o verzi PHP která to ještě umí) bych spíš očekával, že budou magic_quotes vypnuté.

Já to nechci vypínat... spíše mě zajímá jestli to stačí jako ochrana.
Nepoužívejte magic_quotes. Můj osobní názor je, že magic_quotes jsou ta největší pitomost, jaká se v PHP za jeho historii objevila.
Proč nepoužívat magic_quotes:
1. Už skoro před čtyřmi lety (od PHP 5.3) byla ta funkčnost oficiálně označená jako zastaralá (což znamená nepoužívat v novém kódu) a z PHP 5.4 byla úplně odstraněná.
2. I ve starších verzích fungování závisí na nastavení serveru, takže „správně“ by skript neměl spoléhat na zapnutí magic_quotes, ale kontrolovat nastavení serveru a zařídit se podle něj. Tedy ve výsledku jediný efekt magic_quotes je nutnost přidat další kód navíc.
3. Zapnuté magic_quotes escapují všechna data od uživatele, i taková, která escapovat nechceme. To pak znamená nutnost „odescapovat“ to, co nemá být escapované.
4. A navíc magic_quotes data escapují funkcí addslashes, která neudělá dokonalé escapování snad pro žádné použití. Například escapování pro MySQL databázi dělá funkce mysql_real_escape_string. Použití addslashes je sice „dostačující“, ale ne ideální.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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