在防止CSRF攻击时,我应该采取以下步骤:
但是当攻击者使用iframe时,它还会发送导致相同CSRF令牌的会话cookie,iframe中的表单也将包含令牌。所以攻击者可以访问。
我在这里缺少什么?
答案 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
指令来阻止您的网站框架。