Javascript ExtJS 7.1标记字段正在执行XSS标记
我在输入时遇到了关于标记字段组件的问题。输入整个值后,将执行此标记。我已尝试阻止在keyup、keypress、keydown和beforequery事件上执行标记,但它仍在执行。这段代码阻止事件在检测到XSS标记时执行Javascript ExtJS 7.1标记字段正在执行XSS标记,javascript,extjs,tagfield,Javascript,Extjs,Tagfield,我在输入时遇到了关于标记字段组件的问题。输入整个值后,将执行此标记。我已尝试阻止在keyup、keypress、keydown和beforequery事件上执行标记,但它仍在执行。这段代码阻止事件在检测到XSS标记时执行 Ext.application({ name: 'Fiddle', launch: function () { var shows = Ext.create('Ext.data.Store', { fields
Ext.application({
name: 'Fiddle',
launch: function () {
var shows = Ext.create('Ext.data.Store', {
fields: ['id', 'show'],
data: []
});
Ext.create('Ext.form.Panel', {
renderTo: Ext.getBody(),
title: 'Sci-Fi Television',
height: 200,
width: 500,
items: [{
xtype: 'tagfield',
itemId: 'tagField',
fieldLabel: 'Select a Show',
store: shows,
displayField: 'show',
valueField: 'id',
queryMode: 'local',
filterPickList: false,
listeners: {
beforequery: function () {
var editor = Ext.ComponentQuery.query('#tagField')[0];
if (editor.inputEl.getValue().search(new RegExp('(<([^>]+)>)')) >= 0) {
editor.inputEl.dom.value = '';
return false;
}
},
keypress: function (textfield, event) {
var editor = Ext.ComponentQuery.query('#tagField')[0];
if (editor.inputEl.getValue().search(new RegExp('(<([^>]+)>)')) >= 0) {
editor.inputEl.dom.value = '';
return false;
}
},
keydown: function (textfield, event) {
var editor = Ext.ComponentQuery.query('#tagField')[0];
if (editor.inputEl.getValue().search(new RegExp('(<([^>]+)>)')) >= 0) {
editor.inputEl.dom.value = '';
return false;
}
},
}
}]
});
}
});
这花了一点时间来寻找,但显然在Ext.form.field.ComboBox中,有一个onfieldVariation处理程序,它确实是所有这些的关键。看一看处理这个问题的代码。。。我相信这就是你想要的:
Ext.define('ComboOverride', {
override: 'Ext.form.field.ComboBox',
onFieldMutation: function (e) {
var inputDom = this.inputEl.dom;
if (Ext.String.hasHtmlCharacters(inputDom.value)) {
inputDom.value = '';
alert('XSS Detected, Removing');
}
return this.callParent(arguments);
}
});
你想阻止xss的注射吗?你能用这把小提琴来表示你想做什么吗@mcg1103是的,我正试图阻止xss注射。我已经更新了我尝试过的代码片段。我目前还试图创建一个正则表达式来忽略输入上的html标记。你有一个xss注入的例子可以作为测试吗?@mcg1103这是我试图使用的xss标记。我也在使用extjs的7.1版本。对不起,我错过了原来的帖子。在你发帖子之前,我对这种攻击一无所知,但很高兴知道!你使用的是经典工具包,对吗?很酷,我认为这个答案非常有用。如果我能用这个,我会试试的。实际上,我通过检测输入值has大于、小于、onerror或src找到了解决方法。它实际上是一种特殊情况,即只有此标记正在执行,而其他标记在接受值后可以在显示器上编码。无论如何,这个答案很有帮助@砧木