Portál AbcLinuxu, 14. května 2025 05:53
Nekdo me upozornil na SQL injection flaw in the php coding.
Muzete me navest jak se proti tomu branit.
Diky
Takze jestli jsem spravne rozumel, tak chyba je v programovani?
Web je od firmy, takze se obratit na ni?
Webhosting si delam sam.
Jakym zpusobem si to muzu sam prekontrolovat?
Prominte jsem v tomto nezkuseny. Takze jeste dotaz.
Cim myslite aplikaci? Je tedy dira v nastaveni MYSQL nebo dira v programingu webu?
Potreboval bych nejake doporuceni co delat, abych tomu zamezil.
ibase_query($conn, 'update TBL set COL=? where ID=?', $val, $id);nebo
$qry = ibase_prepare($conn, 'insert into TBL(COL) values (?)'); for ($i=1; $i<=100; i++) ibase_execute($qry, $i); ibase_unprepare($qry);Když si na to zvyknete, je to podstatně praktičtější a SQL injection nehrozí - dokud nezačnete vkládat data od klienta do dotazu, což ale v naprosté většině případů není potřeba.
$query = "SELECT * FROM users WHERE username='$_REQUEST[username]' AND password='$_REQUEST[password]'";do password jsem dal: ' OR 'a'='a a funguje to, ale jak zjistim data z tabulky?
$query = "SELECT * FROM users WHERE username='$_REQUEST[username]' AND password='$_REQUEST[password]'";
function myentities($text) { $bad=array('&','"',"'"); $good=array('&','"','''); $text=str_replace($bad,$good,$text); return $text; } function mysprintf($format) { $args = func_get_args(); unset($args[0]); foreach($args as $id => $v){ $args[$id]=myentities($v); } return vsprintf($format,$args); }a volanie SQL nasledovne:
$prikaz=mysprintf("SELECT * FROM login WHERE login='%s' AND pass=SHA1('%s');",$_POST['login'],$_POST['pass']); $q=mysql_query($prikaz);Vo funkcii myentities mam casto este dalsie znaky, ktore potrebujem pri nacitani konvertovat. Kedze som C-ckar, stale pouzivam konstrukcie s sprintf, takze je to pre mna minimalna zmena a uplne mi to vyhovuje.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.