Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Механизм передачи формы (https://javascript.ru/forum/server/61602-mekhanizm-peredachi-formy.html)

Гробовщик 25.02.2016 19:22

Механизм передачи формы
 
Доброго времени суток, уважаемые форумчане
Столкнулся с проблемой пока для меня не понятной
Есть интернет магазин, на форме заказа товара пользователь заполняет данные, нажимает отправить, идёт проверка формы и форма отдаётся php скрипту.
php скрипт обрабатывает данные, формирует заказ, сохраняет его в БД и отправляет письмо-уведомление на почту.
У меня форма прекрасно обрабатывается и никаких проблем нет.
Однако, у другого пользователя провайдер намутил какую то чушь и его ip меняется в рандомном порядке с периодичностью несколько раз в минуту.
Сам я сталкиваюсь с таким первый раз, но это действительно так, я проверял(составлял логи её движения по сайту)
И соответственно после отправки формы (он отправил 1 раз) в базу добавились 4 заказа, а так же на почту пришло 4 письма. Разброс времени заказов был 3 минуты, а так же все 4 заказа были отправлены с разных ip адресов. Все остальные данные были идентичны. С письмами та же беда.
Тогда я решил схитрить и заблокировал кнопку формы после её нажатия, у меня нажимается и отправляется, у пользователя с ip-шниками форма не отправляется
Подскажите что делать. может кто сталкивался???

Max Power 25.02.2016 21:16

Дурь какая-то. Никогда не сталкивался. Слать пользователя разбираться с провайдером.

Если хочется решить проблему самому - серверу пофигу на ip, есть кука сессии, юзер идентифицирован однозначно. Пишем миддлеварь, который будет по телу всех пост-запросов вычислять md5-хеш и сохранять его, когда в течение заданного интервала приходит один и тот же post-запрос от одного юзера - блокировать его и не пускать дальше, клиенту слать уведомление. Но это такой гемор...

laimas 26.02.2016 06:27

Цитата:

Сообщение от Гробовщик
пользователь заполняет данные, нажимает отправить, идёт проверка формы и форма отдаётся php скрипту.
php скрипт обрабатывает данные, формирует заказ, сохраняет его в БД


РНР скрипт должен - принять форму, проверить данные, и только после этого либо в базу, либо возврат формы. То что на клиенте что-то проверяется серверу должно быть по барабану.

Браузеры могут запоминать содержание формы, а возвратившись на страницу с ней, можно и повторно отправить, а еще и по F5 в вашу базу можно написать сколь угодно мусора. Чтобы не получать таковой, нужно перенаправление страницы, можно и на саму себя.

Хост не изменяет IP пользователя, это ваша фантазия.

Гробовщик 26.02.2016 07:44

laimas,
Я понимаю о чём я говорю.
Да скрипт проверяет данные, то что я забыл это написать-сути не меняет. Даже если есть пере направление, кому надо, тот мусора накидает. У меня стоит другая проверка и поверьте по F5 ничего не накидается...
Я не говорил, что хост меняет ip. Провайдер меняет ip клиенту и да он меняется, я знаю о чём говорю
Спасибо за вашу консультацию, но мне бы по сути...

Гробовщик 26.02.2016 07:57

Max Power,
Цитата:

Сообщение от Max Power
Слать пользователя разбираться с провайдером.

не варик. у пользователя логика проста, есть у меня-может быть и у других... Да и мне из принципа интересно, ведь нет нерешаемых проблем.
Цитата:

Сообщение от Max Power
Но это такой гемор...

Я думал об это же... Я думал выдавать пользователю идентификатор и записывать его в куку, и не давать пользователю заказывать чаще, чем раз в 5 минут (например). Я просто надеялся, что есть более интересный вариант...
А может есть смысл докопаться до хостера с этим вопросом???

laimas 26.02.2016 09:43

Цитата:

Сообщение от Гробовщик
Провайдер меняет ip клиенту и да он меняется, я знаю о чём говорю


А большая часть интернет пользователей как раз сидит на динамическом IP, или для вас это открытие?

Перенаправление это как раз одна из защиты от F5, дабы сбросить POST, никакие проверки этого сделать не могут.

Прежде чем заказать товар, в магазинах предлагают регистрацию. А кому надо напакостить мусором, тому и куки не помеха.

Гробовщик 26.02.2016 13:48

laimas,
Цитата:

Сообщение от laimas
А большая часть интернет пользователей как раз сидит на динамическом IP, или для вас это открытие?

Друг, что же ты такой упрямый... Обычно динамический ip меняется при пере подключении, тут же ip-шник меняется сам по несколько раз в минуту БЕЗ ПЕРЕ ПОДКЛЮЧЕНИЙ
Цитата:

Сообщение от laimas
Перенаправление это как раз одна из защиты от F5, дабы сбросить POST, никакие проверки этого сделать не могут.

Ты не знаешь а говоришь... У меня товар в куках висит (id). После отправки в базу куки отчищаются... Без куков запрос повторно не отправляется...
В случае о чём говоришь ты я просто могу вернуться на страницу назад (в хроме так) и запрос отправиться повторно, если проверка херовая... $_POST вроде отчистится, но я смогу на такую страницу просто перейти со своего сервера через форму и задолбить тебе базу через скрипт (объяснять не буду, если сам не понял, то и не поймёшь). Это не панацея...
Цитата:

Сообщение от laimas
Прежде чем заказать товар, в магазинах предлагают регистрацию. А кому надо напакостить мусором, тому и куки не помеха.

Тут без регистрации, в глупых магазинах регистрацию предлагают, да и по ТЗ регистрации быть не должно...
Друг, ты бред несёшь, отвяжись от меня со своими аргументами, они глуповатые...

laimas 26.02.2016 14:14

Цитата:

Сообщение от Гробовщик
тут же ip-шник меняется сам по несколько раз в минуту БЕЗ ПЕРЕ ПОДКЛЮЧЕНИЙ

А вы откуда это знаете, по логам? Они вам об этом не скажут, в данном случае нужен анализ открытия/закрытия соединения. И трудно представить пользователя желающего вам насолить, который бы по несколько раз в минуту что-от слал, закрывая и открывая опять интернет соединение. Такое поведение характерно не человеку, а боту, и одними куками защиту не сделать. Выполнение же JS-сценария, как средство защиты от бота может помочь, если бот серверный, если с клиента работает, то не поможет.

Цитата:

Сообщение от Гробовщик
Ты не знаешь а говоришь... У меня товар в куках висит (id). После отправки в базу куки отчищаются...


Да хоть на прищепках висит и под паспортом, ведь отправляется, а не сервером читается.


Цитата:

Сообщение от Гробовщик
В случае о чём говоришь ты я просто могу вернуться на страницу назад (в хроме так) и запрос отправиться повторно, если проверка херовая... $_POST вроде отчистится, но я смогу на такую страницу просто перейти со своего сервера через форму и задолбить тебе базу через скрипт (объяснять не буду, если сам не понял, то и не поймёшь).


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

Гробовщик 26.02.2016 14:25

laimas,
Я не буду тебе объяснять даже. Ты лучше тогда все формы через ajax отправляй... И никакого пере направления не надо... А с ip -шниками да, ты прав человек отправляет данные приходит то, что он отправлял... Это несомненно бот, вот именно так и есть. и то что я именно давал доступ по паролю в админку и мониторил как у логина меняется ip адрес в зависимости от страницы тоже работа бота... Всё ты победил...
Купи себе пироженное...

laimas 26.02.2016 14:30

Цитата:

Сообщение от Гробовщик
Ты лучше тогда все формы через ajax отправляй... И никакого пере направления не надо...

Вы не поясняете, чем отправка, но утверждаете, что де Хрому похрен перенаправление, стоит только сделать переход по истории, и... Вот хрен там, никаких и, не получится. Так что прежде чем спорить, не мешало бы выяснить.

Насчет глупых магазинов с регистрацией.... Ну-ну... Спецы, мать вашу. :)


Часовой пояс GMT +3, время: 01:53.