Комментарии 29
Вот он, незамутненный, рафинированный пример программиста, кодящего за еду.

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

Баг в том, что они не отслеживают IP и не добавили хотя бы минимальной капчи.
Не решит проблему, просто сделает автоматизацию атаки сложнее.
Было дело, заказал несколько раз по «вечному» промо-коду stickermule несколько наклеек, используя промо-код из ссылки после первой покупки. Его можно было применять многократно, суммируя с другими акциями, за счёт чего сумма заказа иногда становилась отрицательной.
image
После четвёртого раза мне стало стыдно и я отписался в техподдержку. Мне тоже ничего не ответили.
Но потом я заметил, что больше оно так не работает.

А вообще, будьте честными.

Как минимум у Сбера по моему оплатить заказ если он отрицательныц не выйдет, валидация не даст, это если картой платить такой заказ

В случае оплаты отрицательного заказа, было так же, как и с нулевым — оплачивать не требовалось и заказ сразу переходил в обработку. Полагаю, у stickermule есть легальные промо-коды, позволяющие оплатить всю сумму.
я мог бы запрограммировать заказ 1000 чесночных пицц из каждого магазина Papa John's по всей Великобритании
Возможно, отменили бы заказ и вернули деньги
Извините, а где тут уязвимость? Я так понял тут просто обычная автоматизация прохождения опроса. Причём настолько элементарная, что обычно даётся в качестве тестового задания тестировщикам.
Нет простейших способов отфильтровать уже прошедших — капча, валидация по IP, т.п.
Все эти способы только поднимают планку автоматизации чуть выше. Я вообще не могу придумать ни одного адекватного способа, который был делал автоматизацию невозможной.
Впрочем соглашусь, даже капча отсекла бы любопытных студентов, а люди, которые могут это обойти стали бы заморачиваться только искусства ради. А это маловероятно для временной акции.
Но и разработчиков/дизайнеров/менеджеров (или кто там это всё делал и придумывал?) тоже понимаю. Для создания таких ограничений тоже нужно больше компетенций и/или трудозатрат, что в конечном итоге поднимают стоимость и приводит к невозможности проведений этих акций. Ну и возможно они научились на этой истории чему-нибудь.
Если учесть, что на стороне сервера сидит человек и вручную эти заказы собирает, то это вообще не уязвимость. Чувака бы просто нафик послали со всеми его промокодами.
В работе с Вебом (Selenium) вместо time.sleep(1) рекомендую использовать wait.until(EC.visibility_of_element_located((By.ID, «Блаблавиджет»)))
Плюсую, всегда коробит от этих слипов в коде, на что они рассчитывают? Что каждая строка кода будет идеально вписываться в этот слип?
если изучать selenium и применять его то сначала ты прописываешь сколько максимально ждать загрузки элемента, например 50
wait = WebDriverWait(driver, 50)
wait.until(EC.visibility_of_element_located((By.ID, «login-logo»)))

По поводу использования задержки для имитации кликов: автор установил значение в 1 секунду, хотя можно было бы рандомизировать это значение.
Кстати, если вы планируете использовать задержку для загрузки элементов или ajax, то в selenium есть специальная функция для этого. Привожу пример в с#:
Browser.Manage().Timeouts().ImplicityWait( TimeSpan.FromSeconds(10) );
В таком случае браузер будет ждать 10 секунд на загрузку элемента, прежде чем выдаст исключение. Это значение можно менять на ходу и это очень удобно.

Хакер в столовой пиццерии. Помню раньше на сайте папа джонс форма отправки заказа иногда становилась неактивной при выборе определенных сочетаний данных. Приходилось ручками менять код формы, что кнопка отправки становилась доступной.
Странно, что GUID никак не был привязан к кукам. Можно было хранить состояние опроса на сервере, увязав его с сессией. Очередной IDOR.
Куки почистить можно. Надо было просто хранить в БД список разосланных гуидов и с ним сверять. Видимо гуид в базу попадал после прохождения опроса уже.
В пападжонсе платежная инфа (номер карты, cvc) идет через сайт пападжонса, а не банка, вот где фейспалм) а они какие-то скидочные коды подбирают. Я бы вообще не советовал у них ничего заказывать.

Как вариант, можно было заглянуть в консоль разработчика, посмотреть какой API запрос шлёт фронт беку после заполнения опроса и не заморачиваться с Selenium.

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