CSRF和iframe

时间:2016-07-10 10:34:44

标签: php csrf

在防止CSRF攻击时,我应该采取以下步骤:

  1. 用户登录,设置会话cookie并生成CSRF令牌
  2. 用户提交表单(带令牌),它应与会话中的令牌匹配
  3. 但是当攻击者使用iframe时,它还会发送导致相同CSRF令牌的会话cookie,iframe中的表单也将包含令牌。所以攻击者可以访问。

    我在这里缺少什么?

1 个答案:

答案 0 :(得分:4)

您错过了IFrames在相同原始策略下无法完全访问Window对象的事实,除非它们的起源匹配。 Details here

  

JavaScript API,例如iframe.contentWindow,window.parent,   window.open和window.opener允许文档直接引用   彼此。当这两个文件没有相同的起源时,这些   引用提供对Window和Location对象的非常有限的访问

因此,攻击者的框架将无法读取任何包含形式的@interface ViewController : UIViewController @property (strong, nonatomic) IBOutlet UILabel *output; @end 或CSRF字段。

但是,您确实需要担心Clickjacking。这是您的网站加载到IFrame中然后变得透明的地方,用户被诱使点击攻击者页面上的内容(例如“赢取iPad点击此处”),这实际上导致点击实际发生在敏感页面中的功能。

建议使用X-Frame-Options: DENY和内容安全策略frame-ancestors指令来阻止您的网站框架。