我对 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/javascript" src="testExtXSS.js"></script>
</head>
<body>
<div id="myDiv"></div>
</body>
</html>
和 testExtXSS.js 看起来像这样:
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');
});
我希望执行 fieldLabel 中的脚本标记,但事实并非如此。当我使用 Firebug 和 Chrome 开发者工具查看 HTML 元素时,我可以在 HTML 树中看到脚本元素。
谁能向我解释一下 ExtJS 如何将它插入 DOM 以及为什么它没有被执行。
谢谢和最好的问候,罗纳德