Веб-приложения: следует ли игнорировать посторонние / ненужные аргументы строки запроса? - PullRequest
3 голосов
/ 29 августа 2011

Я все еще довольно новичок в разработке веб-приложений, поэтому, возможно, это вопрос n00b.

Кажется, что большинство веб-сайтов просто молча игнорируют аргументы строки запроса, которые им не нужны или не понятны.Например, URI github обычно выглядит так:

https://github.com/airbnb

Теперь, если я просто коснусь фиктивной строки запроса, например:

https://github.com/airbnb?foo=bar

Страница загружается нормально и не работаетЯ не жалуюсь на строку запроса.

Это выглядит вполне разумно, и я протестировал некоторые другие сайты, и они также проигнорировали посторонние и / или ненужные аргументы строки запроса.

Мои вопросыявляются:

1) Это правильное или де-факто поведение большинства веб-приложений?(предположительно ответ - да)

2) Если (1) - «да», является ли причина просто здравым смыслом, условностью, простотой и т. д.?Или стандарты, такие как HTTP или REST, имеют какое-либо руководство или интерес к решению, как это обрабатывается?

Альтернативы могут быть:

  • Явно защищает от неизвестных аргументов строки запроса, что, возможно,немного грубовато
  • Перенаправление на «чистую» версию URL без поддельных строк.Опять же, возможно, это не нужно

Ответы [ 2 ]

4 голосов
/ 29 августа 2011

Практика, которой я всегда придерживался при разработке веб-приложений, заключается только в проверке ожидаемых параметров.Вы не должны, IMHO, даже читать / анализировать любой параметр, который вы не ожидаете, потому что возможности практически бесконечны.Представьте себе, что можно выполнить запрос, например:
https://github.com/airbnb?foo=bar
, а также:
https://github.com/airbnb?fooo=bar
, а также:
https://github.com/airbnb?foooo=bar

Итак, еслиОдин из них заключается в том, чтобы отказаться от каждого отдельного параметра, который не был принят, это, конечно, было бы немного подавляющим.Просто игнорировать и даже не читать их должно быть достаточно безопасно.

Отказ в запросах, содержащих непредвиденные параметры, также создаст дополнительные проблемы, например: Google Analytics (и другие решения для отслеживания) могут попасть на ваш сайт с использованием дополнительных параметров.

Примечание: если ваше приложение поддерживает перенаправление, я рекомендую на всякий случай прочитать следующий совет: http://guides.rubyonrails.org/security.html#redirection

0 голосов
/ 29 августа 2011

Обработка дополнительных параметров, включая такие вещи, как строки запросов в почтовых запросах, полностью зависит от приложения.Разные фреймворки ведут себя по-разному, и вам не следует полагаться на какое-либо конкретное поведение.

Если вы внедряете, я бы рекомендовал быть абсолютно строгим в отношении проверки параметров.Таким образом, вам не придется полагаться на какое-либо из вышеупомянутых действий, и в качестве дополнительного бонуса вы сможете легко написать правила для брандмауэров веб-приложений, таких как mod_security.

"Будьте либеральны в том, что выпринять "это рецепт для дыр в безопасности и проблем совместимости.

...