2010-12-03 2 views
1

Может ли кто-нибудь указать мне, как защитить приложения от CSRF?Методы защиты CSRF

Любой код, связанный с этим.

Я использую extjs для UI, Java на сервере и сервере tomcat.

Заранее спасибо.

+0

Возможный дубликат [Проблема CSRF в Tomcat] (http://stackoverflow.com/questions/4344868/csrf-issue-in-tomcat) – 2012-05-16 07:00:26

ответ

0

да, у меня есть простое решение, которое хорошо сработало для меня. Для каждого почтового запроса отправьте sessionid в данные через javascript (полученный из файла cookie), а на стороне сервера просто нужно проверить, что cookie sessionid и sessionid в данных одинаковы для каждого запроса на отправку.

+0

Я использую сервер Tomacat в своем проекте. – Yasin 2010-12-03 08:01:51

0

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

Идентификатор сеанса - это файл cookie, поэтому он отправляется с любым запросом. Таким образом, все злоумышленники должны сделать, чтобы захватить sessionid, чтобы заставить ваше приложение отправить запрос на сервер под контролем злоумышленника. Это можно сделать с помощью межсайтового скриптинга, но также можно сделать, создав приложение и отправив формы iFrame (есть другие способы сделать это).

Взаимодействие, которое необходимо защитить от CSRF, должно включать информацию, которую злоумышленник не может знать заранее (токен CSRF), который уникален для каждого сеанса, на страницу и для каждой формы, а затем идеально используется только один раз. Маркер CSRF должен быть представлен в форме, а не в cookie (по причине, упомянутой выше). См. «Пример реализации» в файле OWASP CSRF protection cheatsheet для получения подробной информации и примера реализации. Некоторые механизмы веб-приложений (например, Tomcat 8) и фреймворки (например, Spring, JSF) имеют защиту, которую вы можете применить, включив конфигурацию.