首页 文章

Extjs Hidden Iframe请求缺少OWASP CSRF令牌

提问于
浏览
0

最近我们实施了 OWASP CSRF 安全令牌概念来处理 CSRF 攻击 . 我使用下面的链接作为参考来实现

https://www.owasp.org/index.php/Category:OWASP_CSRFGuard_Project

https://github.com/aramrami/OWASP-CSRFGuard

pom.xml

<dependency>
    <groupId>org.owasp</groupId>
    <artifactId>csrfguard</artifactId>
    <version>3.0.0.590</version>
</dependency>

我对我的项目进行了所有必要的更改 . 现在我能够看到 OWASP_CSRFTOKEN 作为请求标头的一部分 .

Problem:

在我的项目中,我们正在使用 Extjs 4 . 实现更改后,所有ajax调用都成功携带 OWASP_CSRFTOKEN 令牌 .

我们确实有一个 Hidden Iframe 用于从服务器下载一些excel文件 . 当我检查这个请求时,它没有携带 OWASP_CSRFTOKEN 令牌,在服务器日志中我可以看到以下消息 .

Logs:

Nov 21, 2017 2:53:47 PM org.owasp.csrfguard.log.JavaLogger log
WARNING: potential cross-site request forgery (CSRF) attack thwarted (user:<anonymous>, 
         ip:0:0:0:0:0:0:0:1, method:%request_method%, uri:/aaa/template/onDemandTemplate.action, 
         error:required token is missing from the request)

Iframe code:

var body = Ext.getBody(),
frame = body.createChild({
        tag:'iframe',
        cls:'x-hidden',
        id:'hiddenform-iframe',
        name:'iframe'
        }),
form = body.createChild({
        tag:'form',
        cls:'x-hidden',
        id:'hiddenform-form',
        action: url,
        method: POST,
        target:'iframe'
        });
var hiddenItem = document.createElement('input');
        Ext.fly(hiddenItem).set({
            type: 'hidden',
            value: Ext.encode(params),
            name: 'reportingParams'
           });
form.appendChild(hiddenItem);
form.dom.submit();

隐藏的Iframes内部是否使用ajax?

如何在Iframe reqeusts中手动注入CSRF令牌?

如果任何人有更好的方法/选择来处理这种情况 . 请分享您的想法 .

谢谢

1 回答

  • 0
    • 没有iframe不使用ajax . 但是,iframe之类的功能可以通过ajax实现 .

    • 如果您要使用Iframes,则为CSRF令牌添加第二个隐藏输入 .

    Code

    var csrf= document.createElement('input');
            Ext.fly(hiddenItem).set({
                type: 'hidden',
                value: getCsrf,// method to get csrf token from the cookie
                name: 'csrf'
               });
            form.appendChild(csrf);
    
    • 由于您使用的是Extjs,因此您假设客户端浏览器启用了Java脚本,因此请避免使用iframe并使用ajax下载Excel文件 .

相关问题