textfield中的extjs4和XSS
我在ExtJS4中做了一个关于XSS攻击的小测试。我的HTML页面如下所示:textfield中的extjs4和XSS,extjs,xss,Extjs,Xss,我在ExtJS4中做了一个关于XSS攻击的小测试。我的HTML页面如下所示: <html> <head> <link rel="stylesheet" type="text/css" href="ext-all.css"/> <script type="text/javascript" src="ext-all-dev.js"></script> <script type="text/javas
<html>
<head>
<link rel="stylesheet" type="text/css" href="ext-all.css"/>
<script type="text/javascript" src="ext-all-dev.js"></script>
<script type="text/javascript" src="testExtXSS.js"></script>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
Ext.onReady(function() {
var formPanel = Ext.create('Ext.form.Panel', {
frame: true,
title: 'Form Fields',
width: 340,
bodyPadding: 5,
fieldDefaults: {
labelAlign: 'left',
labelWidth: 90,
anchor: '100%'
},
items: [
{
xtype: 'textfield',
name: 'textfield1',
fieldLabel: '<script>alert(document.cookie)</script>Text field',
value: '<script>alert(document.cookie)</script>Text field'
}
]
});
formPanel.render('myDiv');
});
testExtXSS.js如下所示:
<html>
<head>
<link rel="stylesheet" type="text/css" href="ext-all.css"/>
<script type="text/javascript" src="ext-all-dev.js"></script>
<script type="text/javascript" src="testExtXSS.js"></script>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
Ext.onReady(function() {
var formPanel = Ext.create('Ext.form.Panel', {
frame: true,
title: 'Form Fields',
width: 340,
bodyPadding: 5,
fieldDefaults: {
labelAlign: 'left',
labelWidth: 90,
anchor: '100%'
},
items: [
{
xtype: 'textfield',
name: 'textfield1',
fieldLabel: '<script>alert(document.cookie)</script>Text field',
value: '<script>alert(document.cookie)</script>Text field'
}
]
});
formPanel.render('myDiv');
});
Ext.onReady(函数(){
var formPanel=Ext.create('Ext.form.Panel'{
框架:对,
标题:“表单字段”,
宽度:340,
车身衬垫:5,
字段默认值:{
labelAlign:'左',
标签宽度:90,
主持人:“100%”
},
项目:[
{
xtype:'textfield',
名称:“textfield1”,
fieldLabel:“警报(document.cookie)文本字段”,
值:“警报(document.cookie)文本字段”
}
]
});
formPanel.render('myDiv');
});
我希望fieldLabel中的脚本标记能够执行,但事实并非如此。当我使用Firebug和Chrome开发者工具查看HTML元素时,我可以在HTML树中看到脚本元素
有人能解释一下ExtJS是如何将其插入DOM的,以及为什么不执行它吗
谢谢并致以最良好的祝愿,
Ronald这是因为ext模板是使用innerHTML注入的,这是最快的方法,但有一个缺点,即脚本无法执行 但您可以对Ext.dom.Element使用update()方法:
...
{
xtype: 'textfield',
name: 'textfield1',
fieldLabel: '<script>alert(1)</script>Text field',
value: 'some val',
listeners: {
render: function(cmp) {
cmp.getEl().update(cmp.getEl().dom.innerHTML, true);
}
}
}
...
。。。
{
xtype:'textfield',
名称:“textfield1”,
fieldLabel:“警报(1)文本字段”,
值:“some val”,
听众:{
渲染:函数(cmp){
cmp.getEl().update(cmp.getEl().dom.innerHTML,true);
}
}
}
...
截图:
(对不起我的英语)非常感谢弗拉德!我已经用Sencha Fiddle测试了这个片段,脚本正在执行(与您所说的相反)。你介意澄清你的问题吗?