Нарушение правил веб-разработки - PullRequest
1 голос
/ 29 июля 2009

Проверьте эту страницу из New York Times:

http://homedelivery.nytimes.com/HDS/learnMorePopUp.do ?mode=common.learnMorePopUp
&productId=NDS
&prodRate=7.40

Я был удивлен, увидев, что когда я вручную изменил параметр prodRate, страница обновилась:

  • Вступительный тариф подписки.
  • Обычный тариф подписки.

Попробуйте сами! Сейчас я мало занимался веб-разработкой, но знаю, что этого не должно быть. Вот мне и интересно:

  • Какая реализация вызовет такое поведение?
  • Как бы вы изменили страницу, чтобы скрыть такие чувствительные параметры от конечного пользователя?

Ответы [ 5 ]

3 голосов
/ 29 июля 2009

Вероятно, они просто читают значение прямо из строки запроса для отображения. Я очень сомневаюсь (или, скорее, очень надеюсь), что любая фактическая обработка заказа не основана на этой стоимости, а скорее на поиске с использованием идентификатора продукта.

1 голос
/ 29 июля 2009

Возможно, вы захотите перефразировать ваш вопрос, поскольку единственные ответы, которые я могу придумать, не слишком освещают:

Q: Какая реализация будет вызывать такое поведение?
A: Тот, в котором пользовательский ввод может контролировать внутреннее, доверенное поведение. Если вы спрашиваете «зачем кто-то это делает», я обычно рассматриваю это как недоразумение. Автор кода обычно не понимает, что пользователь может (а) контролировать значение и / или (б) даже обнаружить, что оно существует. Чаще всего я видел это как перенаправление - вы нажимаете кнопку, сервер определяет сумму, а затем перенаправляет браузер на новую страницу, которая поддерживает значение

.

В: Как бы вы изменили страницу, чтобы скрыть такие конфиденциальные параметры от конечного пользователя?
A: Не храните значение таким образом, чтобы оно могло быть изменено конечным пользователем. Если у вас есть хранилище, доступное на сервере (например, движок сервлетов), сохраните его в контексте сеанса. Если у вас нет хорошего механизма сессии, вы можете сохранить его в подписанном или HMAC-файле cookie.

1 голос
/ 29 июля 2009

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

1 голос
/ 29 июля 2009

Вы не можете заказать с этой страницы, поэтому я не вижу здесь дыры в безопасности. Да, это глупо, но я был бы гораздо более обеспокоен, если бы фактический поток заказов был так плохо сконструирован. Это позволяет легко обновлять курс в одном месте и просто передавать значение, чтобы я мог видеть, как это произошло.

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

1 голос
/ 29 июля 2009

Ну, вы на самом деле пытались заказать его еще? Это может подтвердить ввод на конце.

Что касается других вариантов, они могли бы рассмотреть либо размещение информации, либо помещение информации в файл cookie. Ни один из них точно не доказательство. Вы не можете получить новое окно с сообщением, и пользователь может отключить куки.

...