При добавлении атрибута стиля ниже на популярном веб-сайте в эмуляторе IE7 ничего не произошло, но когда я выполняю его с тривиального веб-сайта в эмуляторе IE7, он запускается.
<body style="width: expression(alert())">
Как можно предотвратить выполнение выражения?
2 ответа
В качестве защиты от внедрения JavaScript в неожиданных местах в современных браузерах используйте безопасность содержимого. политика. Например, CSP script-src: none;
будет запрещать выполнение любого JavaScript на вашей странице, независимо от того, где он был создан. Могут быть разработаны более тонкие политики, позволяющие использовать JavaScript только из определенных URI или только скриптов с определенными хэшами.
self
или разрешить только сценарии с известными хэшами; это хорошая практика для предотвращения XSS в целом.
HTC
, ни expression
, поскольку оно работает только в IE11. Но согласен, это хороший первый уровень защиты! Выполняется ли ваш код Javascript, когда вы запрещаете выполнение javascript из self
, или это параметр self
для приложения JSF?
Функция, о которой вы говорите, называется Dynamic Properties
и больше не поддерживается в IE8.
Динамические свойства (также называемые «выражениями CSS») больше не поддерживаются в Internet Explorer 8 и более поздних версиях, в стандартном режиме IE8 и более поздних версиях. Это решение было принято из соображений соответствия стандартам, производительности браузера и безопасности. Динамические свойства по-прежнему доступны в Internet Explorer 8 в режиме IE7 или IE5. (Дополнительные сведения о режимах совместимости документов см. В разделе «Определение совместимости документов».) Поскольку Internet Explorer 8 в режиме IE8 полностью совместим со стандартом Cascading Style Sheets, Level 2 Revision 1 (CSS2.1), большинство динамических свойств написано для обхода каскадного режима. Недостатки, связанные с таблицами стилей (CSS) в предыдущих версиях Internet Explorer, больше не нужны. Другие динамические свойства с более конкретным использованием обычно можно заменить стандартным JavaScript.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.