Защита XSRF в приложении в стиле AJAX - PullRequest
7 голосов
/ 23 мая 2009

В настоящее время мы разрабатываем полностью основанное на AJAX приложение, которое будет взаимодействовать с сервером через RESTful API. Я рассмотрел потенциальные схемы защиты от атак XSRF против API.

  1. Пользователь аутентифицируется и получает сессионный cookie, который также подаются дважды с каждым запросом.

  2. Мы реализуем OAuth-потребителя в Javascript, получить токен, когда пользователь входит в систему и подписывает все запросы с этим токеном.

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

Есть ли причина, по которой потребитель OAuth не будет работать в этой ситуации?

Ответы [ 3 ]

4 голосов
/ 09 сентября 2010

Большинство библиотек AJAX устанавливают дополнительный заголовок «X-Requested-With: XMLHttpRequest», который трудно подделать при базовой атаке XSRF (хотя это возможно при сочетании с XSS). Проверка наличия этого заголовка является хорошей стратегией углубленной защиты, если вы ожидаете, что все ваши запросы будут AJAX.

1 голос
/ 10 сентября 2010

Используйте двухэтапный запрос, первый запросит у сервера непредсказуемый токен, а второй запросит реальные действия с токеном.

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

Но будьте осторожны, чтобы не допустить утечки токенов (узнайте, как захватывать json, когда они влияют на значение глобальной переменной и т. Д.) И читайте:

http://www.google.com/search?q=xsrf+defence

0 голосов
/ 06 мая 2010

Самый простой способ запретить XSRF - это проверять реферер каждого запроса RESTful, чтобы убедиться, что запрос поступает из того же домена. Сеансовый cookie важен для сохранения состояния, но он не защищает от XSRF, поскольку он также будет отправлен с поддельным запросом. Как правило, Motorola использует этот метод на большинстве своих аппаратных средств для защиты XSRF на основе реферера на встроенном сетевом оборудовании с ограниченными требованиями к памяти. Это не самая безопасная защита XSRF, защита на основе токенов лучше, но обе системы все еще можно обойти с помощью XSS. Самая большая проблема с защитой XSRF на основе токенов состоит в том, что для возврата и исправления каждого запроса требуется много времени, и вы, вероятно, пропустите несколько запросов.

Обязательно ознакомьтесь с той же политикой происхождения и просканируйте свой сайт на наличие xss . Вам также следует прочитать Топ-10 OWASP за 2010 год А3-сломанная аутентификация и управление сеансами .

...