Portál AbcLinuxu, 14. května 2025 05:53

Dotaz: Jak se branit proti SQL injection flaw in the php coding.

26.3.2006 08:02 anon123 | skóre: 35 | blog: ganomi
Jak se branit proti SQL injection flaw in the php coding.
Přečteno: 295×
Odpovědět | Admin

Nekdo me upozornil na SQL injection flaw in the php coding.

Muzete me navest jak se proti tomu branit.

Diky

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.3.2006 09:33 t0ms
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Programming:PHP:SQL_Injection :-).
26.3.2006 12:35 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.

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?

26.3.2006 13:01 Thaweg | skóre: 16 | blog: Herbatka | Ostrava
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Překontrolovat to jde jednoduše - zkus SQL injection třeba podle výše uvedeného odkazu (nějaký šetrný příkaz, ne zkoušet smazat databázi ;-) ) a buď to aplikace má ošetřeno, podvržený požadavek zahodí a nic zajímavého nebude (správné chování), nebo najdeš díru v aplikaci.
26.3.2006 13:46 anon123 | skóre: 35 | blog: ganomi
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.

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.

26.3.2006 17:49 Vladimír
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Tady jsou popsány dobré příklady: http://www.unixwiz.net/techtips/sql-injection.html.. Je to anglicky. V podstatě se v PHP doporučuje použít funkce mysql_real_escape_string() pro každou proměnnou přicházející z formuláře.
26.3.2006 19:33 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Ono by vůbec nejlepší bylo, kdyby interface pro MySQL v PHP nebyl napsán tak hloupě, aby nutil programátora cpát data od klienta do SQL dotazu…
27.3.2006 09:25 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
A jak by se teda data od uzivatele ukladala do tabulek? Jsem zacatecnik a dotaz myslim vazne, bez jakekoliv ironie nebo neceho takoveho. Diky za odpoved.

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
27.3.2006 12:56 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Podívejte se třeba na interface pro InterBase/Firebird, v dohledné době (možná dokonce už teď) by to podobně mělo fungovat i pro PostgreSQL. Funguje to tak, že na příslušném místě SQL dotazu dáte jen zástupný symbol (otazník) a hodnotu předáte zvlášť jako samostatný parametr. Příklad:
  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.
27.3.2006 15:12 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Hm, obavam se, ze pro hlubsi pochopeni bych se musel do problemu zanorit prilis (vzhledem ke svym znalostem a zkusenostem) hluboko :-). Protoze momentalne nevidim rozdil, jestli zavadna data poslu soucasne s dotazem, nebo jako parametr. Jak rikam - jsem zacatecnik. Mozna taky ne zcela presne rozumim pojmu "SQL injection".

Ale presto (nebo prave proto) diky za snahu :-)

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
27.3.2006 18:24 Dejv | skóre: 37 | blog: Jak ten blog nazvat ... ? | Ostrava
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Stydim se jak male decko pristizene v obchode pri kradezi cokolady a sypu si popel na hlavu. Stacilo si precist odkaz v prvni reakci a vse je hned jasnejsi. Jak "SQL injection", tak duvod predavani parametru "jako parametru".

Dejv
Pevně věřím, že zkušenější uživatelé mě s mými nápady usměrní a pošlou tam, kam tyto nápady patří...
27.3.2006 10:57 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Odpovědět | | Sbalit | Link | Blokovat | Admin
SQL injection flaw je docela normální bug, chyba v aplikaci.
28.3.2006 01:04 Franta B.
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajimalo by me jak mam udelat injection v dotazu
$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?
28.3.2006 02:52 billgates | skóre: 27
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Musite si najst nejaky prikaz, ktory vypise riadky z tabulky, napriklad ak je to obchod, tak nejaky zoznam tovaru alebo zoznam ludi a ten potom takymto sposobom zmenit.
28.3.2006 14:52 Franta B.
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Mohl byste mi dat nejaky priklad? treba jak vypisu uzivatele pomoci injekce z tabulky users v tomhle prikladu?
$query = "SELECT * FROM users WHERE username='$_REQUEST[username]' AND password='$_REQUEST[password]'";
28.3.2006 02:50 billgates | skóre: 27
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja vo svojich skriptoch vzdy pouzivam nasledujucu konstrukciu:
function myentities($text)
{
  $bad=array('&','"',"'");
  $good=array('&amp;','&quot;','&#039;');
  $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.
28.3.2006 02:50 billgates | skóre: 27
Rozbalit Rozbalit vše Re: Jak se branit proti SQL injection flaw in the php coding.
Bolo to myslene ako sposob ocharny proti SQL injection.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.