Защитить бэкэнд от множественных отправок форм в Laravel - PullRequest
0 голосов
/ 24 сентября 2018

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

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

Поэтому я хочу знать, есть ли у Laravel какое-то решение для этого случая.

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

По запросу:

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

Другой альтернативой является создание токена в сеансе для одного использования только приСоздайте метод () из контроллера, отправьте токен представлению и поместите его в скрытое поле, извлеките его из запроса поста и проверьте токен поста с помощьюмаркер сеанса.Если два токена совпадают, отмените его, чтобы другие запросы не пытались его использовать, а если они пытаются, я отклоняю запрос.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

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

0 голосов
/ 24 сентября 2018

Если вы знаете, кто ваши пользователи (потому что у них есть идентификатор), то это довольно легко сделать.Возможно, используйте какую-нибудь систему быстрого доступа, такую ​​как Reddis, чтобы проверить, что пользователь находится в состоянии редактирования во время выполнения действия.

Однако , что создает сложностисвой.Также не работает, если вы не знаете, кто ваши пользователи.

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

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

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