RESTful PUT и DELETE и брандмауэры - PullRequest
21 голосов
/ 01 декабря 2009

В классической книге «Веб-службы RESTful» (O'Reilly, ISBN 978-0-596-52926-0) на странице 251 говорится: «Некоторые брандмауэры блокируют HTTP PUT и DELETE, но не POST.»

Это все еще правда?

Если это правда, я должен разрешить перегруженному POST заменить DELETE.

Ответы [ 4 ]

16 голосов
/ 04 декабря 2009

Брандмауэры, блокирующие HTTP PUT / DELETE, обычно блокируют входящие соединения (к серверам за брандмауэром). Если у вас есть контроль над брандмауэром, защищающим ваше приложение, вам не нужно беспокоиться об этом.

Кроме того, брандмауэры могут блокировать PUT / DELETE, только если они выполняют глубокую проверку сетевого трафика. Шифрование не позволит брандмауэрам анализировать URL-адреса, поэтому, если вы используете HTTPS (вы защищаете свои данные с помощью SSL, верно?), Клиенты, обращающиеся к вашей веб-службе, смогут использовать любой из четырех стандартных HTTP-глаголов.

1 голос
/ 04 декабря 2009

Я бы не стал беспокоиться о перегрузке POST для поддержки запроса DELETE.

HTML 4.0 и только XHTML 1.0 поддерживают запросы GET и POST (через), поэтому обычным является туннелирование PUT / DELETE через скрытое поле формы, которое читается сервером и отправляется соответствующим образом. Этот метод сохраняет совместимость между браузерами и позволяет игнорировать любые проблемы с брандмауэром.

Ruby On Rails и .NET обрабатывают запросы RESTful таким образом.

В дополнение к GET, POST, PUT & DELETE запросы в настоящее время полностью поддерживаются через объект запроса XMLHttpRequest. XHTML 2.0 также официально поддерживает GET, POST, PUT & DELETE.

1 голос
/ 01 декабря 2009

Некоторые 7-уровневые межсетевые экраны могут анализировать трафик до такой степени. Но я не уверен, сколько мест будет настраивать их как таковые. Вы можете зайти на serverfault.com, чтобы узнать, насколько популярной может быть такая конфигурация (вы также всегда можете уточнить у своего ИТ-персонала)

0 голосов
/ 01 декабря 2009

Вы можете настроить брандмауэр на все, что захотите (по крайней мере, в теории), поэтому не удивляйтесь, если некоторые администраторы sys блокируют HTTP PUT / DELETE.

Опасность HTTP PUT/DELETE связана с некоторыми неправильно настроенными серверами: PUT заменяет документы (а DELETE удаляет их ;-) на целевом сервере. Таким образом, некоторые системные администраторы принимают решение заблокировать PUT на случай, если где-то открыт треск.


Конечно, мы говорим о брандмауэрах, действующих на "уровне 7", а не только на уровне IP; -)

...