Zadejte hledaný výraz...

Ošetření vstupu $_GET

Michalworms
verified
rating uzivatele
12. 10. 2014 22:23:04
čau, řeším teď jak ošetřit vstup stránkování mám URL localhost/kategorie&stranka=2
php skript:
if(!isset($_GET))
$url_stranka = 1;
else
$url_stranka = $_GET;
chci to ošetřit tak aby za $_GET nemohl nikdo nic podstrčit a pokud by podstrčil, bylo vráceno 1 zkoušel jsem to přez (int) nebo is_int ale nic nefunguje.
díky za odpověď
12. 10. 2014 22:23:04
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061023
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
12. 10. 2014 22:28:19
intval() a myslím, že by stálo za to si přečíst nějaké základy php před tím, než položíte další dotaz na podnikatelské fórum
12. 10. 2014 22:28:19
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061022
Martin Kanala
verified
rating uzivatele
(23 hodnocení)
12. 10. 2014 22:28:46
Předpokládám, že $_GET má nabývat pouze číselných hodnot.
Pak není nic lehčího, než:
if(@is_numeric($_GET)){$url_stranka = intval($_GET);}
else{$url_stranka = 1;}
12. 10. 2014 22:28:46
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061021
Michalworms
verified
rating uzivatele
12. 10. 2014 22:33:42
Napsal Martinek94;1131538
Předpokládám, že $_GET má nabývat pouze číselných hodnot.
Pak není nic lehčího, než:
if(@is_numeric($_GET)){$url_stranka = $_GET;}
else{$url_stranka = 1;}
podobný postupy jsem zkoušel taky a výsledek vrací chybu Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:ComplexWebServerhttp_docskategorie.php on line 61
12. 10. 2014 22:33:42
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061020
Martin Kanala
verified
rating uzivatele
(23 hodnocení)
12. 10. 2014 22:34:42
To už ale není chyba téhle podmínky - ta dává to, co má = číslo.
Chyba už pak musí být v předání té hodnoty do dotazu.
12. 10. 2014 22:34:42
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061019
Vladimír Smitka
verified
rating uzivatele
(4 hodnocení)
12. 10. 2014 22:35:05
Napsal Jan Stejskal;1131537
intval() a myslím, že by stálo za to si přečíst nějaké základy php před tím, než položíte další dotaz na podnikatelské fórum
Tak alespoň je snaha problém řešit, první krok (z mnoha) k bezpečnějším aplikacím :-)
Pár info zde: http://php.vrana.cz/obrana-proti-sql-injection.php
12. 10. 2014 22:35:05
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061018
Jan Stejskal
verified
rating uzivatele
(7 hodnocení)
12. 10. 2014 22:35:44
Napsal Martinek94;1131538
Předpokládám, že $_GET má nabývat pouze číselných hodnot.
Pak není nic lehčího, než:
if(@is_numeric($_GET)){$url_stranka = $_GET;}
else{$url_stranka = 1;}
to je chybné řešení, projde vám například ?stranka=7.49 což projít nesmí
12. 10. 2014 22:35:44
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061017
Martin Kanala
verified
rating uzivatele
(23 hodnocení)
12. 10. 2014 22:40:31
Napsal Jan Stejskal;1131546
to je chybné řešení, projde vám například ?stranka=7.49 což projít nesmí
Omlouvám se, má chyba. Jsem již zdegenerován z bezpečnostních funkcí, které opakovaně používám (v této podmínce by byla fce použita při dosazování GETu do proměnné) a tam je to prohnáno přes Vámi navrhovaný intval(). Tento mezikrok jsem zde opomněl dopsat.
Každopádně po doplnění mého řešení je to plně funkční, ale tazatelův problém to i tak zcela neřeší (viz jeho poznámka výše).
12. 10. 2014 22:40:31
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061016
Michalworms
verified
rating uzivatele
12. 10. 2014 22:44:26
problém vyřešen přebíral jsem ještě jinde $_GET a tam nebyl ošetřen problém podstrkávání URL, díky za radu
12. 10. 2014 22:44:26
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061015
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
13. 10. 2014 00:03:09
Doporučil bych podívat se na http://dibiphp.com/ a nebo ještě lépe rovnou na nějaký framework. Při ručním escapování je vždycky velké riziko, že něco uteče (nemluvě o tom, kolik je s tím práce).
13. 10. 2014 00:03:09
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061014
Vladimír Smitka
verified
rating uzivatele
(4 hodnocení)
13. 10. 2014 08:44:37
Když už nepoužívám žádnou vrstvu nad PHP a -DB, tak používám techniku "izolátorů" = na začátku kódu si všechny $_ proměnné přiřadím do lokálních proměnných a u toho je rovnou ošetřím. Pak už se v kódu nikdy nesmí objevit $_POST, $_GET, $_COOKIE, $_SERVER (případně $_REQUIRE, $HTTP_POST_VARS,...), což lze jednoduše kontrolovat.
13. 10. 2014 08:44:37
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061013
Smazany ucet 253
verified
rating uzivatele
(3 hodnocení)
14. 10. 2014 00:09:02
klidně můžeš vyzkoušet toto:
v prvním řádku je tzv. ternární operátor, který je úplně to samé jako podmínka if - else. Uspoří psaní, jinak je to stejné jako if - else podmínka.
druhý řádek je tam proto, že (int)$_GET, která bude obsahovat cokoli jiného než číselnou hodnotu vrátí 0. V případě float vezme jen to, co je před desetinnou čárkou (tečkou).
to jen abys měl také další řešení, které tu ještě nepadlo.....
14. 10. 2014 00:09:02
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061012
Petr Soukup
verified
rating uzivatele
(5 hodnocení)
14. 10. 2014 01:54:36
Napsal rapemer;1131893
klidně můžeš vyzkoušet toto:
v prvním řádku je tzv. ternární operátor, který je úplně to samé jako podmínka if - else. Uspoří psaní, jinak je to stejné jako if - else podmínka.
druhý řádek je tam proto, že (int)$_GET, která bude obsahovat cokoli jiného než číselnou hodnotu vrátí 0. V případě float vezme jen to, co je před desetinnou čárkou (tečkou).
to jen abys měl také další řešení, které tu ještě nepadlo.....
Co se stane, když bude url "?stranka=-1" ? :)
14. 10. 2014 01:54:36
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061011
Smazany ucet 253
verified
rating uzivatele
(3 hodnocení)
14. 10. 2014 02:00:32
pak to celé vybouchne :-))
ano, správně by mělo být:
díky za upozornění
---------- Příspěvek doplněn 14.10.2014 v 02:21 ----------
klidně se to dá vyřešit i funkcí s regulérním výrazem, možností je mnoho :-)
---------- Příspěvek doplněn 14.10.2014 v 02:36 ----------
klidně se to dá řešit i lepší funkcí :-)
:-)
14. 10. 2014 02:00:32
https://webtrh.cz/diskuse/osetreni-vstupu-_get/#reply1061010
Pro odpověď se přihlašte.
Přihlásit