Когда-то кто-то мне говорил о такой проблеме: допустим есть у нас на сайте функционал, который отвечает за удаление записи ненужной, ненужной пользователю, конечно. И вот задача: как не дать ссылкой той воспользоваться поисковику хитрому.
С этой проблемой я не сталкивался до тех пор, пока в Опере не появился сомнительный функционал: выделяете текст, задевая кнопки-ссылки на удаление, случайно дергаете выделение мышкой и браузер быстро и методично открывает все ссылки, попавшие в выделение, в новых вкладках. Что произойдет дальше, думаю, всем ясно. Я так случайно удалил из админки несколько тестовых записей.
Как же быть? А дело то дрянь — все просто.
Есть у нас ссылка такая:
А делать надо вот так:
Мысль эту подсмотрел в Symfony2, с которым сейчас и работаю. Там при автоматическом генерировании CRUD контроллера такие штуки делаются.
С этой проблемой я не сталкивался до тех пор, пока в Опере не появился сомнительный функционал: выделяете текст, задевая кнопки-ссылки на удаление, случайно дергаете выделение мышкой и браузер быстро и методично открывает все ссылки, попавшие в выделение, в новых вкладках. Что произойдет дальше, думаю, всем ясно. Я так случайно удалил из админки несколько тестовых записей.
Как же быть? А дело то дрянь — все просто.
Есть у нас ссылка такая:
<a href="/10/delete">Удалить</a>Никак не защищена, не от случайного вызова выделением, ни от захода поисковика.
А делать надо вот так:
<form action="/10/delete"> <button type="submit">Удалить</button> </form>А в коде, отвечающем за обработку этой формы, можно дополнительно написать:
if ($_SERVER["REQUEST_METHOD"] !== "POST") { echo "нечего сюда лазить"; // ну и код ответа соответствующий указать, а не 200 ОК }Пример был на чистом PHP
Мысль эту подсмотрел в Symfony2, с которым сейчас и работаю. Там при автоматическом генерировании CRUD контроллера такие штуки делаются.
Комментариев нет:
Отправить комментарий