Autor Zpráva
Zerog
Profil
Zdravim
chci se zaptat jak je to s SQL injection ...vim o tom teorii a chtel bych se zeptat na par detailu ... kdyz treba chci zadat nejakej skodlivej sql kod do tabulky aby to script prevzal, tak by to php melo vzdy dat do apostrofu a tudiz prevzit jako normlni retezec ne?

priklad:

puvodni sql:
SELECT nick, email FROM uziv WHERE id = $id //$id je nejake cislo zadena uzivatelem ....

ja napisu:
9 OR 1=1 --

tutiz by to melo vypadat nasledovne?
SELECT nick, email FROM uziv WHERE id = 9 OR 1=1 --

a vypsat celou tabulku. Ale podle me se to da do uvozovek : '9 OR 1=1 --' a tudiz se to vezme jako normalni reterec (string). Je tedy sql injectio jeste aktualni nebo se to dela ulne nejak jinak?
Alphard
Profil
Ale podle me se to da do uvozovek
jestliže očekáváš číslo, tak to nedáš do uvozovek :-)

ale v PHP ověříš vstup pomocí funkce is_numeric(), pokud je číslo, provede se dotaz na databázi, pokud to není číslo, tak v závislosti na tvé povaze uživatele upozorníš nebo pošleš do háje
djlj
Profil
Zerog
Moc nerozumím, na co se ptáš, ale v tvým případě by jednoduše stačilo: if(intval($id)){ // v pořádku } else { // v nepořádku }
Alphard
Profil
pro řetězce mysql_real_escape_string()
Zerog
Profil
Jo vidis ....kdyz ocekavam cislo tak to retezec nebude :) me to ted nedoslo ...

Ani se neptam na to jak tomu zamezit, ale spise na to jestli je SQL injection stale aktualni... PS: diky za komentare
koudi
Profil
jestli je SQL injection stale aktualni
Ano, je.
Zerog
Profil
Strucne ale vystizne :)
Zerog
Profil
Jeste jeden lamer dotaz ...jak utocnik zjisti nazev tabulky? nejjednodusi co me napada je vyvolat nejak chybu ,aby to tu tabulku napsalo. Je to tak?
djlj
Profil
nejjednodusi co me napada je vyvolat nejak chybu ,aby to tu tabulku napsalo
To bys tam musel mít echo mysql_error();.

Útočník to spíš bude tipovat podle nějakých často používaných názvů.
Zerog
Profil
hmm
k
Profil *
function cislo($cislo){
$ret = intval($cislo);
return $ret;
}

takhle mužu ošetřit číslo ? ,, to by mělo pustit jen tehdy jestlito je číslo ne ?
djlj
Profil
k
Stačí ti to, co jsem napsal výše…
Ondra_xxxx
Profil *
Když budeš používat mysqli_prepare apod. z kolece mysqli tak tě něco takového nemusí zajímat :))))
Toto téma je uzamčeno. Odpověď nelze zaslat.