Почему не стоит использовать $_REQUEST в web приложениях

Массив $_REQUEST содержит в себе данные массивов $_GET, $_POST и $_COOKIE. Это позволяет создавать практически универсальные скрипты, которые поддерживают одновременно все три способа передачи информации по HTTP.

Что же здесь такого плохого из-за чего этот массив не стоит применять? Ведь его использование предоставляет такие возможности и может значительно упростить написание скриптов и облегчить труд программиста.

К сожалению, главный недостаток $_REQUEST является продолжением его главного достоинства. Обращение к элементу $_REQUEST осуществляется только по его имени и никак не связано с тем, каким образом этот элемент в нём оказался.

Для наглядности рассмотрим два простых примера.

В первом из них используется массив $_POST. Поэтому передать значение параметру под именем var можно только, используя POST запрос.

Во втором используется массив $_REQUEST. В этом случае передать значение параметру под именем var можно как с помощью POST или GET запроса, так и с помощью Cookie.

Чтобы сравнить работу обоих примеров передадим каждому из них значение параметра varс помощью адресной строки (GET запрос). В качестве значения параметра зададим цифру «1». Сделаем это следующим образом:

http://localhost/?var=1

В первом случае файл index.php включает в себя код из первого примера, а втором случае соответственно из второго.

Так как значение параметра передаётся посредством GET запроса, то в первом случае код выдаст «В параметре var ничего нет!» потому что значение этого параметра не будет передано сценарию. В этом можно легко убедиться внимательно рассмотрев скриншот:

20140806-001

Во втором случае результат работы кода будет прямо противоположный. В браузер будет выведена цифра «1» (см. скриншот).

Пример 2

С точно таким же успехом можно передать значение параметра с помощью POST запроса или Cookie. Результат будет аналогичный.

На первый взгляд, из негативных последствий использования $_REQUEST, наиболее серьёзным кажется возможность возникновения неразберихи в коде при использовании параметров. Однако это далеко не так.

Подобная неразбериха, безусловно, может сильно осложнить процесс написания и отладки кода, а также увеличить вероятность возникновения различного рода ошибок. В тоже время параметры, которые передаются с использованием GETи POST-запросов и Cookie могут быть связаны с важными аспектами работы не только вновь создаваемого, но и уже готового работающего web приложения. В их числе авторизация, доступ к той или иной информации или возможностям и так далее. Таким образом, возможность передачи web приложению параметров, минуя «официальные» предусмотренные для этого пути представляет собой крайне высокую опасность.

Поэтому, перед тем как использовать в скрипте $_REQUEST следует серьёзно задуматься и трезво оценить, не окажет ли это влияние на безопасность.

Ссылки

$_REQUEST — Переменные HTTP-запроса – Описание $_REQUEST на PHP.RU

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *