Выполнение сценария 2x - это ожидаемое поведение или ошибка в Chrome + Firefox? - PullRequest
0 голосов
/ 26 октября 2018

РЕДАКТИРОВАТЬ: Этот вопрос не имеет ничего общего с дубликатами сообщений, помеченными @ mario

Если это произойдет и с вами, просмотрите этот комментарий из @ MonkeyZeus's ответа.


У меня есть очень простой скрипт PHP / MySQL, который вставляет 1 строку в базу данных. Однако по какой-то причине я обнаружил, что если я хочу запустить скрипт, введя URL-адрес в строку URL-адреса Chrome / Firefox, но не заканчивая его, просто нажмите на уже посещенную опцию - мой скрипт будет выполнен дважды.

Я использую последнюю 64-битную версию Chrome, сборка: 69.0.3497.100.

Firefox: 62.0 (64 бита) (кажется, это было исправлено в v63?)

Это ожидаемое поведение или потенциальная ошибка? Если не ошибка, кто-нибудь может объяснить, почему это происходит?

EDIT:

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

Правильный ответ идет на @MonkeyZeus.

1 Ответ

0 голосов
/ 26 октября 2018

Ключевым моментом здесь является то, что никогда и никогда не выполняются потенциально разрушительные операции с помощью запроса GET.Всегда всегда делают это с помощью POST и защищают их от CSRF с помощью токенов.

Существует множество способов предварительной ссылки, предварительно загруженной ссылки, выскоблили, изобразили или иным образом получили доступ без вашего ведома.Инструменты перевода, скриншоты для закладок, приложения для создания заметок и другие загружают любой запрос GET, не заботясь о последствиях.

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

<img src="http://example.com/user/290/delete">

Затем этот пользователь будет удален немедленно, подтверждение не требуется.Вы даже не узнаете, что это случилось.Вот почему принятие через POST жизненно важно.

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