2012-05-31 2 views

ответ

1

Это возможно.

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

Возможно, вам нужен хороший механизм аутентификации. Одной из основных недостатков веб-приложений, уязвимых для CSRF, являются файлы cookie. Если ваш API им не нужен, использование другого механизма аутентификации (например, OAuth или HTTP Digest) может быть ответом, так что внешние пользователи могут безопасно использовать API (без отвратительной проверки крошки).

Оба HTTP Auth Basic и OAuth 2.0 возможны в клиентских приложениях JS. Для OAuth2 существует демо-версия: https://gist.github.com/563893

Twitter использует свой собственный публичный API внутри основного веб-сайта, поэтому есть доказательство того, что возможно что-то подобное, хотя я не уверен, как конкретно они предотвращают внешний CSRF. Каждый запрос делается получателем (находится здесь: https://api.twitter.com/receiver.html), а токены авторизации туннелируются с помощью файлов cookie. Вам, вероятно, потребуется продолжить исследование их реализации.

+0

Как я могу хранить секретный ключ на клиенте? (Мой клиент - браузер) – vlycser

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