gpt4 book ai didi

xss - Qooxdoo 是否针对 XSS 提供保护

转载 作者:行者123 更新时间:2023-12-05 00:18:25 29 4
gpt4 key购买 nike

我正在寻找有关 Qooxdoo 安全性的信息。
我想检查我的应用程序 vs OWASP top 10
需要审查的一点是 XSS OWASP A3 XSS

我如何确定 Qooxdoo 是安全的,可以抵御 XSS 攻击?
Qooxdoo 是否使用了一些 sanitizer 工具?

已解决

所有讨论的简短回答。是的 Qooxdoo 是 XSS 安全的。默认情况下,不会执行任何字段中的 javascript 值。

但是,如果使用rich=true,则必须检查输入/输出

最佳答案

一个常见的 XSS 攻击向量是攻击者以某种方式将 JS 代码输入到 Web 应用程序中的情况,这样这些代码就会出现在网页的 DOM 中并因此被激活。

为了防止这种 XSS,您必须确保后端服务器不会向浏览器发送用户生成(未清理)的 html ......(这与 qooxdoo 无关)。

也就是说,常规的 qooxdoo 小部件通常不会将数据显示为 html,因此即使没有聪明的服务器,您也相当安全。异常(exception)是 qx.ui.basic.Label小部件及其后代。如果您设置 rich,标签小部件可以直接显示 HTML。属性(property)。 rich属性设置为 false默认情况下,但如果启用它,则必须确保不显示“危险”的 html 内容。

只有极少数(非必要)qooxdoo 小部件允许您将 HTML 代码插入到 DOM 中。在这些情况下,您必须注意清理数据。有问题的小部件是:

qx.ui.embed.Html
qx.ui.table.cellrenderer.Html
qx.ui.progressive.renderer.table.cell.Html
qx.ui.virtual.cell.Html
qx.ui.virtual.layer.HtmlCell
qx.ui.virtual.layer.HtmlCellSpan

如果您确实使用 qx.html.*qx.bom.*qx.dom.*对象直接与 DOM 一起工作,你超出了 qooxoo 的范围,必须注意采取相应的行动。

另一个重要的攻击媒介是身份验证 cookie。大多数攻击都是通过让浏览器在用户不知情的情况下将请求与 cookie 一起发送到其服务器来实现的。

Qooxdoo 本身根本不需要您使用 cookie。由于 qooxdoo 应用程序设计为在单个浏览器窗口中运行,因此您无需使用 cookie 即可工作。实现此类事情的一种简单方法是拥有一个“服务器访问单例”,它负责与后端的所有通信,并在添加到每个请求的特殊 header 中提供访问 token 。

下面的代码可以作为 cookie 问题的指南。

qx.Class.define('myapp.Server', {
extend : qx.io.remote.Rpc,
type : "singleton",

construct : function() {
this.base(arguments);
this.set({
timeout : 60000,
url : 'QX-JSON-RPC/',
serviceName : 'default'
});
},

properties: {
sessionCookie: {
init: null,
nullable: true
}
},

members : {
/**
* override the request creation, to add our 'cookie' header
*/
createRequest: function() {
var req = this.base(arguments);
var cookie = this.getSessionCookie();
if (cookie){
req.setRequestHeader('X-Session-Cookie',this.getSessionCookie());
}
return req;
}
}
});

如果您在 myapp.uiLogin 中提供登录弹出窗口你可以更换
标准 callAsync如果后端对您的请求不满意,则添加以下内容以弹出登录窗口。

 /**
* A asyncCall handler which tries to
* login in the case of a permission exception.
*
* @param handler {Function} the callback function.
* @param methodName {String} the name of the method to call.
* @return {var} the method call reference.
*/
callAsync : function(handler, methodName) {
var origArguments = arguments;
var origThis = this;
var origHandler = handler;
var that = this;
var superHandler = function(ret, exc, id) {
if (exc && exc.code == 6) {
var login = myapp.uiLogin.getInstance();

login.addListenerOnce('login', function(e) {
var ret = e.getData();
that.setSessionCookie(ret.sessionCookie);
origArguments.callee.base.apply(origThis, origArguments);
});

login.open();
return;
}

origHandler(ret, exc, id);
};

if (methodName != 'login') {
arguments[0] = superHandler;
}

arguments.callee.base.apply(this, arguments);
},

看看 the CallBackery application看看这在实际应用程序中是如何工作的。

关于xss - Qooxdoo 是否针对 XSS 提供保护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37792167/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com