Я сделал небольшой тест относительно атак XSS в ExtJS4. Мой HTML страница выглядит следующим образом:ExtJS 4 и XSS в текстовом поле
<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, которая будет выполнена, но это не было. Когда я просматривал элементы HTML с помощью Firebug и инструментов для разработчиков Chrome, я мог видеть элемент сценария в дереве HTML.
Может ли кто-нибудь объяснить мне, как ExtJS вставляет это в DOM и почему он не выполняется.
Спасибо и наилучшие пожелания, Ronald
Я проверил сниппет в Сенча Fiddle [ как показано здесь] (https://fiddle.sencha.com/#fiddle/fgh), и скрипт выполняется (напротив того, что вы сказали). Не возражаете прояснить свой вопрос? –