protiv $_REQUEST
От: bugbuster
На: 28-10-2002@16:08 GMT+2
Оценка: 1/Неутраленkakto znaem $_REQUEST moje(she) da presentira $_GET, $_POST, $_COOKIE i $_FILES. otpadaneto na $_FILES e prodiktuvano ot niakoi security concerns (okolo file upload) i tyi kato Andrey propusna da otbeleji kakvi sa prichnite smiatam az da go napravia :)
polzvaneto na $_REQUEST do goliama stepen obezmislia niakoi ot security feature-ite koito idvat s 'register_globals = Off'.
primer:
pri polzvane na $_REQUEST za priemane na stoinost na cookie, taka
if ($_REQUEST['id']) {
$good_login = 1; fpassthru \
("/restricted/area/51/"); }
podadenata forma moje da byde manipulirana i tozi var da idva ot obiknoven form ($_GET, $_POST request), vmesto ot istinska biskvita, koeto samo po sebe si e threat.
adekvatno reshenie za tozi sluchai e
if ($_COOKIE['id']) {
$good_login = 1; fpassthru \
("/restricted/area/51/");
garantirashto cheteneto na informaciata ot samata biskvita. na niakoi moje da mu e udobno da polzva $_REQUEST, no na men lichno ne mi e. kato pogleda edin kod iskam da znam koe otkyde idva i kyde otiva.
pozdravi,
-bb
[Отговори на този коментар]
ne sum mnogo siguren
От: Andrey
На: 28-10-2002@19:08 GMT+2
Оценка: 1/Неутрален Ne sum mnogo siguren che s _GET/_POST shte pokries Cookie. Dori i vuv vremenata register_globals On tova ne beshe vuzmogno osven ako admina ne se e poburkal i ne e porovichkal po php.ini -to. Ima edna direktiva :
variables_order = "GPCS"
Po princip ne izglegda mnogo iasno, no tova e GET/POST/Cookie/Session . Kakto se vigda dori Cookie ne moge da pokrie session promenliva inache shte nastanat loshi vremena. Ne sum 100% siguren, no sled kato popitah Derick Rethans toj mi otgovori che predpolaga che variables_order se polzva i pri register_globals Off. Tova lichno spored men oznachava che pak niama da mogesh da "pokriesh" neshto ot sesia s GET/POST.
Pone dokolkoto sledih diskusiata za premahvaneto na _FILES ot _REQUEST mnenieto mi e che prosto sudurganieto na _FILES e po razlichno ot tova na _GET/_POST plius e po-lesno da se iterira vurhu $_REQUEST ako $_FILES ne sa vutre (mnogo lesno mogat da se vidiat kakvi promenlivi sa doshli pri zaiavkata, a sudurganieto na _FILES ne sa promenlivi).
[Отговори на този коментар]
e, az sym :-)
От: bugbuster
На: 29-10-2002@15:47 GMT+2
Оценка: 1/Неутрален'Ne sum mnogo siguren che s _GET/_POST shte pokries Cookie.'
o, az sym siguren :-)
razgledai slednia mnooogo basic primer i go probvai pri teb eventualno. mojesh da pokrivash cookies kakto si iskash.
// foo.php
<?php
// ...
$ip = getenv("REMOTE_ADDR");
if (($_REQUEST[ip])!=NULL) {
// vmesto if (($_COOKIE[ip])!=NULL) {
print ("ip $ip already in cookie list, won't add to counter!");
// proverka za stoinost na hidden variable
} else {
setcookie ("ip", "$ip");
setcookie ("ip", "$ip", time()+3600);
setcookie ("ip", "$ip", time()+3600, "/share", "localhost", 1);
} ?>
// syzdava biskivta sys sadyrjanie 'ip=127.0.0.1'
// foo.html
<form action=foo.php method=post>
<input type=hidden name=ip value="ip=127.0.0.1">
<input type=submit name=submit value=submit>
</form>
kato zaredish foo.html -> submit -> foo.php
shte vidish iasno che "biskvita veche ima".
kakvo moje da posledva pri po-complexni operacii s biskvite i $_REQUEST ostaviam na vyobrajenieto. get creative :-)
// polzvan browser:
// Lynx Version 2.8.4rel.1 (17 Jul 2001)
note:
tochno zashtoto variable_order-a e
'EGPCS' mojesh da pravish takiva neshta
s $_REQUEST.
[Отговори на този коментар]
agitacia
От: bugbuster
На: 29-10-2002@16:30 GMT+2
Оценка: 1/НеутраленAndrey, shte napravish usluga na php society-to ako go zapoznaesh s tova, a oshte poveche ako gi agitirash da mahnat pone (i) $_COOKIE ot $_REQUEST-a. (I M H O)
[Отговори на този коментар]
Willl see
От: Andrey
На: 29-10-2002@18:48 GMT+2
Оценка: 1/НеутраленV momenta niamam vugmognost da testvam , no obeshtavam utre da napravia tova. I vupreki tova ne sum ubeden che GET/POST shte pokrie cookie ako ima takova (az sum si malko tvurdoglav po priroda za tova ne go priemaj lichno :) ). IMO edva li shte se suglasiat zashtoto prichinata za premahnvane na _FILES ot _REQUEST e druga, po-tochno ne e tova, koeto ti obiasniavash kato security threat. I vse pak COOKIE-tata sa chast ot zaiavkata i sa promenlivi za razlika ot sudurganieto na _FILES. Po moe mnenie triabva da si ostanat tam. Vig da kagem che _ENV niama miasto tam, no toj moge da se izkliuchva da ne se populate-va.
Oshte predi da probvam i v sluchai che se okaga neprav to neka da kaga che e do programista kak shte se opazva. Moiata diplomna ia pisah i ne polzvah _REQUEST, vsushtnost polzvah go, no sled tova prenapisah koda za da ne e nugno. Ima hitur moment pti kojto v userland mogesh da si napravish neshatata ok i da emulirash _REQUEST s ikliuchenie na superglobalnostta mu. Znachi mogesh da oprdelish kakva e bila zaiavkata. Az go praveh chrez count() vurhu HTTP_GET_VARS i HTTP_POST_VARS, i v niakakva promenlive $method slagam 'GET' ili 'POST'. Posle samo imam ${'HTTP_'.$method.'_VARS'}, koeto v novite versii e ${'_'.$method} , no razbira se _REQUEST e po-lesen za upotreba.
Do utre kogato shte ti kaga rezultata ot testvaneto.
[Отговори на този коментар]
mail
От: bugbuster
На: 29-10-2002@19:30 GMT+2
Оценка: 1/Неутраленok :)
ostavi mi mail-a si ako iskash da ne tormozim drugite tuk.
[Отговори на този коментар]
Tested...
От: Andrey
На: 30-10-2002@8:47 GMT+2
Оценка: 1/Неутрален Probvah go, no ima edno goliamo NO. Znachi ti polzvash .html file za da izpratish zaiavka. Losho..tova ne triabva da se pravi...zaiavkata ti triabva da e ot php pri, koeto setvash cookie vednaga. Vse pak si v greshka otnosno pokrivaneto. Az testvah s tvoiat primer. Izvikah direktno foo.php, koeto mi setna cookie (Opera 6.05). Cookieto e sus stojnost 192.168.1.22. Otidoh na foo.html i kliknah na buttona. Predvaritelno dobavih edno echo $_REQUEST['ip']. Poznaj kakuv beshe rezultata - 192.168.1.22, a ne 127.0.0.1, koeto idva da pokage che GET/POST ne pokriva COOKIE, kamo li SESSION. Drug vupros e kolko e sakat edin programist ta da ne vnimava che da ne mu e setnato cookie-to, ili otkude mu idvat promenlivite.
"Vsushtnost na cookie ne triabva da se razchita" - citiram choveka blagodarenie na kojto go ima tozi site.
andrey webgate bg
P.S.
Izviniavam se ako tonut mi e "offensive".
Редактиран на: 30-10-2002@8:59
[Отговори на този коментар]