Безопасность в действиях контроллера RESTful Rails. Должен ли я всегда использовать блок формата response_to? - PullRequest
1 голос
/ 04 сентября 2010

Интересно, должен ли я ВСЕГДА использовать блок response_to / format.xxx во ВСЕХ моих действиях на ВСЕХ моих контроллерах.Это произошло потому, что я понял, что для приложений, использующих только формат ответа HTML (без блока response_to), я мог бы отправить запрос другого типа (например, XML) и получить действительный ответ.Это считается небезопасным?Мне кажется, что это так, и кажется, что решение было бы ВСЕГДА добавить блок response_to / format.xxx в КАЖДОЕ действие на КАЖДОМ контроллере, даже если вы используете только HTML.Таким образом, любые не HTML-запросы будут отклонены (как и должно быть).

Итак, была ли когда-нибудь ситуация, когда было бы нормально пропустить биты response_to / format.xxx для любого заданного действия?Даже если вы просто создавали простое стандартное приложение, предназначенное только для HTML?Похоже, что разные версии генераторов кода rails с течением времени создавали разные вещи.Просто интересно, что считается лучшей практикой и когда можно уйти, не используя ее.

И если ответ «Да, вы должны использовать его все время в каждом действии, чтобы быть в безопасности», то не будет ли это считаться образцом в этой точке?И не следует ли его как-то толкнуть в рельсы, чтобы нам не приходилось каждый раз переписывать его снова и снова?

1 Ответ

1 голос
/ 04 сентября 2010

Не думаю, что это повлияет на безопасность вашего приложения.Предполагая, что входящий HTTP-запрос правильно сформирован и клиент аутентифицирован для выполнения запроса, вам, как серверу, на самом деле все равно, что получает клиент.Фактически, клиент может передавать всевозможные заголовки и параметры, которые вы полностью игнорируете, и клиент должен обрабатывать неожиданные форматы или ошибки.Это является неотъемлемой частью базовой архитектуры HTTP.

В любом случае вы можете настроить маршруты так, чтобы они не принимали параметр .format, и в этом случае запрос .xml приведет к ошибке 404 или другому типу ошибки.

Если вы используете только один формат, не блокируйте response_to, он загромождает код ненужными артефактами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...