
22.03.2008, 19:21
|
|
Banned
Регистрация: 05.12.2005
Сообщений: 982
Провел на форуме: 4839935
Репутация:
1202
|
|
To nerezus, [ cash ]
совершенно верно, не претендую на первоткрывателя.
Это обзор того что известно, только все вместе с моими коментариями и некоторыми доработками.
[ _REQUEST {variables_order} OVERWRITE ]
Глобальный массив реквеста формируется по принципу последней перезаписи переменных из других глобальных массивов в порядке, заданном директивой php.ini :
variables_order = EGPCS (по дефолту)
где
E - $_ENV[]
G - $_GET[]
P - $_POST[]
C - $_COOKIE[]
S - $_SERVER[]
только для реквеста енв и серверный массивы будут проигнорированны.
Тоесть в данном порядке конечные значения $_REQUEST будут переписаны содержимым куков в последнюю очередь.
Это можно использовать при криво поставленных фильтрах безопасности со всеми вытекающими.
Примерно как и импортреквест для инклуда в слаеде.
Кстати дайте мне в ПМ последнюю его версию, потестим.
Пример, есть код:
PHP код:
<?php
print "variables_order : ".ini_get('variables_order')."<br>";
print "<br>GET : ";print_r($_GET);
print "<br>POST : ";print_r($_POST);
print "<br>COOKIE: ";print_r($_COOKIE);
print "<br><br>REQUEST: ";print_r($_REQUEST);
?>
Шлем пакет на скрипт:
Код:
POST /1.php?a=1 HTTP/1.0
Host: localhost
Cookie: a=3;
Content-Length: 3
Content-Type: application/x-www-form-urlencoded
a=2
Наблюдаем:
Код:
variables_order : EGPCS
GET : Array ( [a] => 1 )
POST : Array ( [a] => 2 )
COOKIE: Array ( [a] => 3 )
REQUEST: Array ( [a] => 3 )
Последний раз редактировалось Elekt; 01.04.2008 в 14:48..
|
|
|