Autor | Zpráva | ||
---|---|---|---|
Zerog Profil |
#1 · Zasláno: 14. 4. 2007, 23:38:08 · Upravil/a: Zerog
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 |
#2 · Zasláno: 14. 4. 2007, 23:46:07
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 |
#3 · Zasláno: 14. 4. 2007, 23:48:04
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 |
#4 · Zasláno: 14. 4. 2007, 23:51:44
pro řetězce mysql_real_escape_string()
|
||
Zerog Profil |
#5 · Zasláno: 14. 4. 2007, 23:53:53
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 |
#6 · Zasláno: 15. 4. 2007, 00:09:14
jestli je SQL injection stale aktualni
Ano, je. |
||
Zerog Profil |
#7 · Zasláno: 15. 4. 2007, 00:17:27
Strucne ale vystizne :)
|
||
Zerog Profil |
#8 · Zasláno: 15. 4. 2007, 00:41:18
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 |
#9 · Zasláno: 15. 4. 2007, 00:54:06
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 |
#10 · Zasláno: 15. 4. 2007, 01:23:27
hmm
|
||
k Profil * |
#11 · Zasláno: 16. 4. 2007, 22:38:19
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 |
#12 · Zasláno: 16. 4. 2007, 22:39:55
k
Stačí ti to, co jsem napsal výše… |
||
Ondra_xxxx Profil * |
#13 · Zasláno: 17. 4. 2007, 13:59:27
Když budeš používat mysqli_prepare apod. z kolece mysqli tak tě něco takového nemusí zajímat :))))
|
||
Časová prodleva: 17 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0