2016-07-10 7 views
3

Когда предотвращение атак CSRF я должен предпринять следующие шаги:CSRF и плавающие фреймы

  1. входа пользователя в систему, установите куки сессии и генерировать CSRF токен
  2. Пользователь отправляет форму (с маркером), и он должен соответствовать фишку в сеансе

Но когда злоумышленник использует iframe, он также отправит куки-файл сеанса, который приведет к тому же токену CSRF, а также формы внутри iframe будут содержать токен. Таким образом, злоумышленник получает доступ.

Что мне здесь не хватает?

+1

Возможный дубликат [Как предотвратить загрузку страницы моего сайта через сторонний фрейм сайта iFrame] (http://stackoverflow.com/questions/2896623/how-to-prevent-my-site-page-to -be загруженного-через-третьи стороны-сайт-кадр из-фрейма) – JimL

ответ

3

Вам не хватает того факта, что IFrames не получают полного доступа к объектам Window в рамках политики одинакового происхождения, если только их происхождение не соответствует. Details here:

JavaScript API, такие как iframe.contentWindow, window.parent, window.open и window.opener позволяют документы напрямую ссылаться друг друга. Когда эти два документа не имеют то же происхождение, эти ссылки предоставляют очень ограниченный доступ к окну и расположение объектов

Поэтому кадр атакующего не будет иметь возможность читать window.document, ни поля CSRF в любой вложенной форме.

У вас есть Clickjacking, чтобы беспокоиться, однако. Здесь ваш сайт загружается в IFrame, но затем становится прозрачным, и пользователь заманивается в щелчок чего-нибудь на странице злоумышленника (например, «Win iPad iPad here»), который фактически вызывает щелчок на самом деле на чувствительном функции внутри вашей страницы.

Использование директив X-Frame-Options: DENY и Content Security frame-ancestors рекомендуется для предотвращения кадрирования вашего сайта.

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