2015-03-04 2 views
3

Как защитить свой сайт от атаки на основе перекрестного запроса? Я посещаю «обычный» сайт. (f.e. normal.php) В фоновом режиме он загружает другой сайт (f.e. victim.php/send_comment), где я уже вошел в систему. Веб-сайт заполняет поля комментариев жертвы.php JS и автоматически отправляет запрос.Как защитить от CSRF

В сети я всегда нахожу трюк, чтобы использовать жетоны против CSRF. Но в этом примере сайт normal.php получит маркер, когда он загружает другой сайт. Я не понимаю, как работает токен? Если нет, как я могу запретить моему сайту принимать этот запрос?

ответ

1

Вся идея CSRF заключается в том, что вы не можете получить victim.php/send_comment без токена с предыдущей страницы, которую вы посетили.

Вы формируете «цепочку» запросов от вашего первоначального входа до тех пор, пока вы не доберетесь туда, где каждый запрос разрешен предыдущим - если вы не перехватите страницу входа в систему, не должно быть способа подделать запросы.

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

+0

Большое спасибо. Имеет смысл! Можете ли вы порекомендовать структуру? – GURKE

+1

@GURKE Это зависит от ваших языковых предпочтений. Для python или ruby ​​многие (возможно, большинство) фреймворки имеют встроенный CSRF. Я не уверен в PHP или Java, но помню, что CSRF обычно является дополнительной функцией - я бы не выбрал фреймворк только из-за этого – goncalopp

+0

Для PHP [Laravel] (http://laravel.com/) отличная встроенная защита CSRF. – flyingL123

Смежные вопросы