Трансляция переменных окружения и Cookies
В переменные преобразуются не только все данные формы, но и переменные окружения (включая Query_String, Content_Length и многие другие), а также все Cookies.
Н-р, вот сценарий, который печатает IP-адрес пользователя, который его запустил, а также тип его браузера (эти данные хранятся в переменных окружения REMOTE_USER и HTTP_USER_AGENT):
Ваш IP-адрес: =$REMOTE_USER?>
Ваш браузер: =$HTTP_USER_AGENT?>
Пo умолчанию трансляция выполняется в порядке ENVIRONMENT-01 POST-COOKIE, причем каждая следующая переменная как бы перекрыв предыдущее свое значение. Н-р, пусть есть переменная окружения A=10, параметр, поступивший из GET-формы А=20 и Cookie А= 30. В этом случае в переменную $A сценария будет записано 30, т.к. cookie перекрывает GET, a GET перекрывает переменные окружения. Так что, проверяя какую-либо переменную окружения VAR в сценарии (особенно если она касается вопросов, связанных с разграничением прав доступа — н-р, переменная содержит пароль), надо задуматься: а что, если злоумышленник запустит ваш сценарий вот так:
http://www.somehost.com/foo.рhр?VAR=что_то_очень_нехорошее
и старое значение переменной окружения VAR окажется стертым? К счастью, в таких ситуациях есть выход — достаточно воспользоваться функцией getenv(), чтобы прочитать значение переменной окружения с указанным именем, и только его — невзирая ни на какие другие данные.
Похожие записи
No user прокомментировали сообщение
Оставить комментарий