Autor | Zpráva | ||
---|---|---|---|
WanTo Profil |
#1 · Zasláno: 17. 6. 2006, 11:50:27
Jak se bráníte proti SQL injection útoku?
Mám třeba URL http://neco/zobrazit=Nejaka%20stranka. Proměnná $_GET["zobrazit"] se pak vloží do SQL dotazu, který bude vypadat například takto: select * from stranky where nazev like 'Nejaka stranka' A teďka se ptám: Existuje nějaký způsob, jak tento dotaz předělat na SQL injection útok? Jak se proti němu bránit, jak řetězec zobrazit ošetřovat? |
||
koudi Profil |
#2 · Zasláno: 17. 6. 2006, 11:54:15
mysql_escape_string
mysql_real_escape_string Další velice dobrou metodou jsoui tzv. placeholdery, podporováno myslim od mysql 4.1 a api podpora od php verze 5 (teď si nejsem zcela jist). |
||
llook Profil |
#3 · Zasláno: 17. 6. 2006, 17:08:20
tak třeba takhle:
mysql_query(sprintf('SELECT * FROM stranky WHERE nazev LIKE \'%s\'', Ale spíš už teď používám prepared statements v PDO: $pdo = new PDO('mysql:host=localhost;dbname=test', 'root');Jinak je taky často v php.ini zapnutá volba magic_quotes_gpc, což sice proti SQL injection chrání, ale jinak je to spíš na zlost. Něco o tom píše Vrána - http://php.vrana.cz/obrana-proti-sql-injection.php - a to je zastánce magic_quotes_gpc (asi jediný, kterého znám). |
||
WanTo Profil |
#4 · Zasláno: 17. 6. 2006, 22:02:49
Čili pokud je povolená magic_quotes_gpc, nemusím se u řetězcových hodnot starat o nic?
|
||
krteczek Profil |
#5 · Zasláno: 18. 6. 2006, 00:32:15
no pry je problém u polí, takže se je lepší m_q_gpc vyhnout, nebo při přijetí proměnných slashe odstranit a pri ulozeni do db je znovu nastavit (blbe ale bezpečne, aspon to mi vyšlo z http://php.vrana.cz/vypnuti-magic_quotes_gpc.php a diskuze pod nim)
|
||
Časová prodleva: 13 dní
|
|||
karbon Profil * |
#6 · Zasláno: 30. 6. 2006, 20:50:35
ta f-ce mysql_escape_string je tutově bezpečná nebo to je jen "kousek" z ochrany?
|
||
Časová prodleva: 3 měsíce
|
|||
v6ak Profil |
#7 · Zasláno: 6. 10. 2006, 18:46:33
Já bych dal přednost mysql_real_escape_string, pokud by to nebyla dostatečná ochrana, tak to bude bezp. chyba této fce. To se už stalo, ale doporučuji ji asi nejvíc.
Zajímalo by mě, zda co je výchozím druhým parametrem. |
||
Joker Profil |
#8 · Zasláno: 6. 10. 2006, 20:57:53
llook
ad magic_quotes_gpc, což o to automatické escapování, ale ještě navíc to může a nemusí být zapnuté. To je fakt na palici. By mě zajímalo, co někoho vedlo k tomu to do PHP přidat |
||
Časová prodleva: 8 měsíců
|
|||
Hacky Profil * |
#9 · Zasláno: 27. 5. 2007, 15:31:44
nemohl by mi nekdo otestovat http://hacky.easyfunfilm.com/login/ ? díky
|
||
Pavel Strejček Profil |
#10 · Zasláno: 27. 5. 2007, 21:12:58
WanTo
Čili pokud je povolená magic_quotes_gpc, nemusím se u řetězcových hodnot starat o nic? magic_quotes_gpc ošetřuje pouze get/post/cookie, takže u proměnné v $_GETu to stačí. Jsou ještě další zdroje data, které je třeba ošetřovat, například databáze. Když třeba načteš něco z databaze, není vhodné to znovu uložit do stejné databáze bez ošetření (escapeování na výstupu není). Většinu externích zdrojů dat řeší magic_quotes_runtime. |
||
v6ak Profil |
#11 · Zasláno: 28. 5. 2007, 13:44:19
Čili pokud je povolená magic_quotes_gpc, nemusím se u řetězcových hodnot starat o nic?
... tak to musím zase někdy odescapovávat... BTW: např. i čísla je potřeba dávat do apostrofů. |
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0