Как не перейти по «опасной» ссылке

вторник, 13 ноября 2012 г.

Когда-то кто-то мне говорил о такой проблеме: допустим есть у нас на сайте функционал, который отвечает за удаление записи ненужной, ненужной пользователю, конечно. И вот задача: как не дать ссылкой той воспользоваться поисковику хитрому.

С этой проблемой я не сталкивался до тех пор, пока в Опере не появился сомнительный функционал: выделяете текст, задевая кнопки-ссылки на удаление, случайно дергаете выделение мышкой и браузер быстро  и методично открывает все ссылки, попавшие в выделение, в новых вкладках. Что произойдет дальше, думаю, всем ясно. Я так случайно удалил из админки несколько тестовых записей.

Как же быть? А дело то дрянь — все просто.

Есть у нас ссылка такая:
<a href="/10/delete">Удалить</a>
Никак не защищена, не от случайного вызова выделением, ни от захода поисковика.

А делать надо вот так:
<form action="/10/delete">
<button type="submit">Удалить</button>
</form>
А в коде, отвечающем за обработку этой формы, можно дополнительно написать:
if ($_SERVER["REQUEST_METHOD"] !== "POST") {
     echo "нечего сюда лазить";
     // ну и код ответа соответствующий указать, а не 200 ОК
}
Пример был на чистом PHP

Мысль эту подсмотрел в Symfony2, с которым сейчас и работаю. Там при автоматическом генерировании CRUD контроллера такие штуки делаются.

Комментариев нет:

Отправить комментарий