2016-12-22 17 views
2

При добавлении атрибута ниже стиля на популярном веб-сайте в эмуляторе IE7 ничего не происходило, но когда я выполняю его с тривиального веб-сайта в эмуляторе IE7, он выполняется.Выполнение javascript блока от css

<body style="width: expression(alert())"> 

Как вы можете предотвратить выполнение выражения?

+0

Вы спрашиваете, как предотвратить выполнение этого в IE 7 или как предотвратить его выполнение в браузерах, которые все еще поддерживаются? – user3553031

+0

ie7 давно мертв с точки зрения Microsoft. –

+0

Неужели это проблема XSS? Разрешите ли вы пользователям сайта редактировать свои стили? – nnnnnn

ответ

0

Функция, о которой вы говорите, называется 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.

+0

Так как это отвечает на вопрос о том, как это работает или как его предотвратить? в IE7? – nnnnnn

+0

Я знаю, что это не поддерживается и не рекомендуется, я хочу знать, как они исправили это 5 лет назад. Поскольку этот вид проблемы все еще существует с HTC до IE9 – gr3g

1

В смягчении против JavaScript впрыскивается в неожиданных местах в современных браузеров используют content security policy. Например, CSP из script-src: none; будет отклонять все выполнение JavaScript на вашей странице, независимо от того, откуда оно было создано. Более тонкие политики могут быть разработаны, чтобы разрешить использование JavaScript только из определенных URI или только для скриптов с конкретными хэшами.

+0

Это хорошо для XSS, но здесь злоумышленный код исходит из «я». Но это хороший ресурс, спасибо! – gr3g

+0

Вы можете отказаться от выполнения JavaScript из 'self' или разрешить только скрипты с известными хэшами; это хорошая практика для предотвращения XSS в целом. – user3553031

+0

Это не будет препятствовать выполнению 'HTC' и' expression', поскольку оно работает только с IE11. Но я согласен, что это хороший первый уровень защиты! Выполняется ли ваш код Javascript, когда вы отклоняете выполнение javascript из 'self' или является опцией' self' для приложения JSF? – gr3g

 Смежные вопросы

  • Нет связанных вопросов^_^