允许用户在 Extjs DateField 中注入 javascript。例如,如果您尝试使用 javascript 输入标签,请输入以下内容
`` 在 Extjs 站点上的日期字段文档中 https://docs.sencha.com/extjs/7.6.0/classic/Ext.form.field.Date.html 它会向您显示警报弹出窗口是一个截屏。它不应该运行 javascript,因为这被认为是代码注入。
以前有人遇到过这个问题吗?
我试图调试弹出窗口的代码,但我找不到根调用者。
在此先感谢您的帮助
此问题与工具提示处理有关。
这里特别执行代码,因为它被注入到 invalidText 属性中。
https://docs.sencha.com/extjs/7.6.0/classic/Ext.form.field.Date.html#cfg-invalidText
这是默认值:
"{0} is not a valid date - it must be in the format {1}"
您可以通过删除替换器或完全更改文本来避免此问题。此外,在处理输入之前检查输入。像 DOMpurify 这样的库可以在这里提供帮助,或者内置 ExtJS 功能,如 maskRe、正则表达式属性——取决于所使用的单个组件。
我认为它与日期字段无关,因为如果您像这样配置数字字段,可以使用相同的值重现它:
{
xtype: 'numberfield',
anchor: '100%',
name: 'bottles',
fieldLabel: 'Bottles of Beer',
value: 99,
maxValue: 99,
minValue: 0,
invalidText:"{0} invalid"
}
它更多地与验证和错误处理相关,默认情况下会显示工具提示。此工具提示需要适当清理。
据我所知,这个问题已经存在多年了。
https://docs.sencha.com/extjs/7.6.0/classic/Ext.tip.ToolTip.html
另一个例子
Ext.getBody().appendChild({
id: 'clearButton',
html: 'Clear Button',
style: 'display:inline-block;background:#A2C841;padding:7px;cursor:pointer;'
});
var tip = Ext.create('Ext.tip.ToolTip', {
target: 'clearButton',
html: '<img src=x onerror=alert(1)>'
});