Autor | Zpráva | ||
---|---|---|---|
david_host Profil * |
#1 · Zasláno: 15. 6. 2011, 14:51:01
Ahoj, mám dotaz. Pokud potřebuji vypsat stánku která má url "index.php?id=2" tak potřebuji ověřit aby v id nebylo nic co by mi mohlo narušit databázi. Napadlo mě že nejednoduší je přetypovat $_GET['id'] na int a pak by neměl nikde být problém ne?
Když budu za databaze tahat vše kde id == přetypovaný $_GET['id']. Připadá mi to jako poměrně jednoduchá obrana, ale nevím jestli není někde nějaký zádrhel, který mi utíká. Na netu jsem toho zatím moc nenašel. |
||
Taps Profil |
#2 · Zasláno: 15. 6. 2011, 15:02:22
david_host:
pokud používáš databázi tak můžeš využít intval pro čísla a mysql_real_escape_string pro text |
||
DarkMeni Profil |
#3 · Zasláno: 15. 6. 2011, 15:05:28
Můžeš to přetypovat, můžeš použí i intval ale já mam rači podmínku is_numeric, když to číslo má být ale nebude tak z databáze zbytečně nic tahat nebudu zatímco intval by něco vyndat mohl, jinak ochranu databáze zajistí i mysql_real_escape_string(řetězec)
|
||
david_host Profil * |
#4 · Zasláno: 15. 6. 2011, 15:15:58
mysql_real_escape_string je taková snadno zapamatovatelná fce :D.. Ale jde mi ted o cisla. na intval ještě kouknu.
|
||
ShiraNai7 Profil |
#5 · Zasláno: 15. 6. 2011, 15:41:17
Pro čísla stačí toto:
$id = @(int)$_GET['id']; |
||
YoSarin Profil |
#6 · Zasláno: 15. 6. 2011, 16:22:53
ShiraNai7:
proč je tam ten @? Přetypování může taky vyhodit nějakou chybu? |
||
ShiraNai7 Profil |
#7 · Zasláno: 15. 6. 2011, 21:33:37
YoSarin:
Může, pokud $_GET['id'] neexistuje. |
||
YoSarin Profil |
#8 · Zasláno: 15. 6. 2011, 23:06:18
ShiraNai7:
Aha, kvůli tomuhle bych ten @ napsal přímo před $ (ať je na první pohled patrné k čemu patří), i když výsledek je podle všeho stejný... Stejně si myslím, že neexistence předaných parametrů by se měla ověřovat dřív a zvlášť (ale nechme OT :) ) |
||
david_host Profil * |
#9 · Zasláno: 15. 6. 2011, 23:17:39
neexistenci overuju předtím takže to není problém
|
||
david_host Profil * |
#10 · Zasláno: 16. 6. 2011, 01:39:42
DarkMeni:
To se mi víc líbí is_int :) |
||
ShiraNai7 Profil |
#11 · Zasláno: 16. 6. 2011, 11:42:27
david_host:
V $_GET jsou vždy řetězce nebo pole, pokud si to nepřetypuješ. is_int by tedy vždy vrátilo false. |
||
david_host Profil * |
#12 · Zasláno: 17. 6. 2011, 00:33:23
ano ano, už jsem na to včera přišel. Děkuji moc za pomoc.
|
||
Časová prodleva: 13 let
|
0