导致CWE-201 veracode错误的jQueryResult.load函数

问题描述

以下代码段导致Veracode错误CWE-201

function advice(tab){
var foo = document.getElementById("foo").value;
var bar = document.getElementById("bar").value;
tab.loader.load({
    url : contextpath+"/test.do?method=helloWorld",method : "POST",params : {
        method : "hi",Foo : foo,Bar : bar,scripts : true
    }
});
}  

不知道我要去哪里。请纠正我。

解决方法

简而言之,CWE 201涉及暴露敏感信息的风险。我假设您共享的代码段不是实际的代码,因为要确定POST请求的哪一部分可能会引起这种暴露并不容易。

我看到可以通过扫描将其标记为敏感数据源的来源是您通过POST发送的 params 。如果您认为必须发送此敏感数据,则必须实施某种形式的访问控制检查,以确保只有具有正确权限的用户才能执行此操作。同样,确保数据通过HTTPS上下文发送也是一种很好的签入代码。

我不确定您正在使用的底层服务器端Web框架,因此我无法为将在此客户端调用之上生成的验证提出代码建议。

如果数据本质上不敏感,那么这是一个误报,您必须propose将其提交给您的安全团队。

另一方面,我认为控制URL或querystring上的方法调用不是一个好主意。攻击者可以猜测或模糊可以发送的有效方法的列表,如果您的代码没有正确的authn / authz检查,则可以利用您的应用程序/ api。