Следует ли ограничивать длину строки URL-адреса для повышения безопасности?

Я использую ColdFusion 8 и jQuery 1.7.2.

Я использую CFAJAXPROXY для передачи данных в CFC. Это создает массив JSON (набор аргументов) и передает его через URL. Строка может быть очень длинной, так как передается довольно много данных.

Сайт, на котором я работаю, имеет существующий код, который ограничивает длину любой строки URL-запроса до 250 символов. Это делается в файле application.cfm путем проверки длины строки запроса. Если какая-либо строка запроса превышает 250 символов, запрос отменяется. Цель этого состояла в том, чтобы гарантировать, что хакеры или другой вредоносный код не будут переданы через строку URL.

Теперь, когда мы используем строку запроса для передачи массивов JSON в URL, мы обнаружили, что запрос Ajax прерывается довольно часто.

У нас есть много других методов обеспечения безопасности, таких как извлечение тегов<> из кода и использование CFQUERYPARAM.

Мой вопрос, является ли ограничение длины строки URL ради безопасности хорошей идеей или просто неэффективно?

4 ответа

Решение

Между длиной URI и безопасностью нет абсолютно никакой корреляции, а скорее вопрос:

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

Как упоминалось выше, на веб-уровне это касается не только GET (ваше беспокойство), но также POST, PUT, DELETE практически для любой другой операции над ресурсом HTTP.

Перенес это в ответ для Эвика -

Это кажется (в лучшем случае) совершенно ненужным, если входы должным образом очищаются. Я уверен, что кто-то умный может быстро победить защиту "безопасности маленьким дверным проемом", если предположить, что это единственная защита.

У OWASP есть несколько хороших, вменяемых руководств по безопасности в сети. Насколько я прочитал, ограничение размера URL не в списке. Для получения дополнительной информации см.: https://www.owasp.org/index.php/Top_10_2010-Main

Я также хотел бы повторить комментарий Хереблюра о том, что это делает интернационализацию сложной или, возможно, невозможной.

Я не разработчик ColdFusion. Но я думаю, что то же самое с другим языком.

Я думаю, что это поможет немного. Проблема вредоносного кода или SQL-инъекций должна решаться вашим приложением.

Я согласен, что ограниченная длина значения строки запроса безопаснее и сложнее для хакеров. Но вы не можете сделать это с данными POST. и это ограничивает некоторую функциональность. Например, для одного символа utf-8 может потребоваться 9 символов после кодирования. это означает, что вы можете поместить только 27 неанглийских символов.

Единственная причина ограничения связана с производительностью и DOS-атакой, а не с безопасностью как таковой (хотя DOS представляет собой угрозу безопасности из-за отключения вашего сервера). Веб-серверы и серверы приложений (включая CF) позволяют вам ограничивать размер данных POST, чтобы ваш сервер не ухудшался из-за очень больших загрузок файлов. Данные URL, если они существенны, могут привести к длительным запросам, поскольку сервер пытается проанализировать, обработать, записать или что-то еще.

Так что здесь есть некоторый скромный риск, связанный с такими вещами. В дни NT у IIS 3 был ряд недостатков, которые были "заблокированы" ограничением длины URL -адреса, но эти дни давно прошли. Есть гораздо больше эксплойтов, представляющих низко висящие фрукты, на которые я бы сначала посмотрел, прежде чем рассматривать эту проблему слишком внимательно - если, конечно, вы не чувствуете, что у вас висит конкретная проблема с людьми, которые вас проверяют (я имею в виду длинные URL -адреса:).

Другие вопросы по тегам