Как бороться с CSRF (наверное)? - PullRequest
3 голосов
/ 12 ноября 2010

Например, в администраторе cp для удаления пользователя есть ссылка - http://example.com/acp/delete-user.php?id=102.Когда ссылка открыта, система автоматически удаляет этого пользователя из базы данных.Представьте, что кто-то прислал мне ссылку (вот так), и я случайно открыл ее.Это означает, что я удаляю этого пользователя, не зная об этом.= (Как с этим бороться? Метод POST? Некоторые токены? И как это сделать точно. Я только учусь. = P

Ответы [ 4 ]

4 голосов
/ 12 ноября 2010

Я рекомендую вам делать подобные вещи с ФОРМОЙ.http://example.com/acp/delete-user.php?id=102 показать форму с кнопкой УДАЛИТЬ и СКРЫТЫМ ВХОДОМ со случайно сгенерированным ключом.Значение хранится в вашем сеансе на стороне сервера.Когда вы нажмете «Отправить», целевая страница проверит, не прошли ли вы правильный ключ.

В сети много ресурсов о CSRF.

0 голосов
/ 12 ноября 2010

Использование POST на самом деле только делает его немного более сложным для злоумышленника (тем не менее, было бы лучше использовать POST).

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

Вы можете найти здесь одну реализацию: http://www.serversidemagazine.com/php/php-security-measures-against-csrf-attacks

0 голосов
/ 12 ноября 2010

Вы смотрели на эту статью .Как уже говорили другие, я надеюсь, что у вас есть аутентификация во всем.Но чтобы сделать правильную реализацию, вам нужно внедрить службу токенов.Потому что, если вы вошли в систему, и я пришлю вам ссылку, то это приведет к удалению пользователя.

0 голосов
/ 12 ноября 2010

Я надеюсь, что у вас установлена ​​система аутентификации, поэтому для того, чтобы получить доступ к этой ссылке, вам потребуется войти в систему.

...