Какие конкретные данные, отправляемые через HTTP POST, могут привести к ошибке HTTP 504? - PullRequest
1 голос
/ 03 октября 2011

У меня есть сайт, который использует форму ввода заказа и отправляет довольно приличный размер запроса POST при отправке формы.

Однако, когда определенное значение передается в одну из наших переменных формы (OrderDetail), каждый раз без сбоев, он получает страницу ошибки в браузере и ошибку 504 через Fiddler.

Вот пара примеров тестов, которые я провел прошлой ночью, отправляя запросы POST через Fiddler.Когда значение «OrderDetail =» изменяется на приведенное ниже, оно либо успешно отправит сообщение, либо вернет ошибку 504 через несколько секунд:

Эти ошибки: FAIL:

  • & OrderDetail = Deliver +Письмо + о + Выполнение% 3B + и + Заявление + на + Заработок + Удержание + Заказ + в + Лос-Анджелес + Округ + Шериф + DASH + Суд + Услуги + Отдел + за + инструкции
  • & OrderDetail = Доставить+ Выполнение + Заработок + Удержание + Приказ + в + Лос + Анджелес + Округ + Шериф + DASH + Суд + Услуги + Отдел + за + инструкции
  • & OrderDetail = Доставить + Письмо + о + Выполнение% 3B + и +Заявка + на + Заработок + Удержание + Заказ + в + Лос + Анджелес + Округ + Шериф
  • & OrderDetail = Доставить + Письмо + о + Выполнение% 3B + Заявление + для + Заработок + Удержание + Заказ + в + Лос+ Анджелес + Округ + Шериф
  • & OrderDetail = Запись + о + Удержание + Исполнение + Заказ + Лос + Анджелес + Округ + Шериф
  • & OrderDetail = приказ + Выполнение + adsfsdfsdfsd + Порядок + Округ
  • & OrderDetail = wd + Execution + adsfsdfsdfsd + Order + Count

Это мне помоглоотметив, что, возможно, это связано со словами « Exec » (ошибки «Exec» и «Execution», «Exe» - нет) и « Count » («County»)и «Count» выдает ошибки, «Cont» - нет)

Однако я не видел ничего такого, упомянутого в поиске Google, касающегося ошибки 504.

Относительно кода Coldfusion вокруг этогоНет ничего интересного для этой страницы.Просто стандартная форма поста.Я добавил тест cfmail в файл приложения, и при этих сбоях он никогда не запускался, так что, похоже, это происходит между браузером и IIS.Мы находимся на общем сервере, поэтому я не вижу там слишком много.

Как ни странно, когда параметр & OrderDetail = изменяется на одно из этих значений (очень похоже на приведенное выше),результат - успех:

  • & OrderDetail = wd + Execution + adsfsdfsdfsd + Order + Coun
  • & OrderDetail = wd + Execution + adsfsdfsdfsd + Order + Conty
  • & OrderDetail = Writ+ из + Удержание + Орден + Выполнение + Лос + Анджелес + Округ + Шериф
  • & OrderDetail = Writ + of + Удержание + ВыполнениеЗаказ + Лос + Анджелес + Округ + Шериф

ВВ-третьих, я поставил «Порядок» ДО «Выполнения», и он работает ..

Общая длина этого запроса POST составляет около 4720 символов.Я увеличил длину этого одного поля до 5-6 раз, и они прошли, так что это почти кажется связанным со значением параметра "& OrderDetail" в POST.

Любые идеи о том, почему этоконкретные данные могут быть проблемой для веб-сервера?Я никогда не видел этого раньше, и это не будет проблемой для почти любого другого запроса.

Еще одно интересное замечание: в запросе POST эта переменная довольно близка к началуиз списка параметров.Если я удалю все после него, это пройдет без проблем.Хотя я не смог понять, что в последующих строках может быть причиной.Я могу опубликовать весь запрос, если он поможет.

Что еще более важно, я просто хочу знать, что можно квалифицировать как «зарезервированное» или «незаконное» для данных FORM.Кажется, что все экранировано правильно, поэтому я не уверен, что еще можно сделать здесь, за исключением некоторой предварительной обработки javascript для дальнейшего экранирования любых таких слов.

Спасибо!

1 Ответ

2 голосов
/ 03 октября 2011

Учитывая, что EXEC и COUNT вызывают ошибку, в то время как установка ORDER перед EXEC предотвращает ошибку, это звучит так, как будто что-то делает некорректную попытку защиты от атак SQL-инъекцией.

Если у вас есть какое-либо программное обеспечение, которое утверждает, что оно делает это, я бы посмотрел, если (временно) отключение его остановит возникновение проблемы.
(Это программное обеспечение может быть на уровне брандмауэра, поэтому вы можетенужно поговорить с системными администраторами.)

Важно отметить, что я бы также проверил вашу кодовую базу на предмет того, где используется OrderDetail, и удостоверился, что он использует cfqueryparam всякий раз, когда он используется внутри запроса - и то же самое относится ко всем другим предоставленным пользователем данным.

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