внешний CSS в теле HTML-файла - PullRequest
1 голос
/ 29 ноября 2011

У меня есть вопрос, который беспокоит меня о некоторых проектах, над которыми я сейчас работаю. Этот вопрос не является дубликатом Какая разница, если я помещу файл CSS внутри или ? или аналогичного.

Например, представьте сервис электронной почты. У пользователя есть почтовый ящик на goodmail.ex, где он получает письмо от Badguy. Badguy знает исходные коды для goodmail.ex и знает, что на странице рядом с тем, где открываются буквы, вводится некоторая конфиденциальная информация. Или даже всплывающее окно, поэтому Badguy пишет письмо в формате HTML и добавляет некоторые позиции: фиксированные или позиции: абсолютные стили, поэтому один из блоков (для этого примера пусть это будет информация электронной почты - всплывающее окно с логином и паролем, говоря сеанс пользователя) закончилась, чтобы обновить, введите ваши данные) с дизайном, как сервис Goodmail.ex. Пользователь считает, что все в порядке и не имеет отношения, поэтому он вводит его, и эта информация отправляется куда-то еще.

Так! Вопрос не в том, как я могу заблокировать этот CSS, здесь должна хорошо работать некоторая фильтрация с помощью пользовательского парсера, но как я могу заблокировать пользователя для использования любого из классов CSS, которые использует goodmail.ex? Например, goodmail.ex фильтрует каждую букву по позиции: fixed, но имеет некоторый блок, плавающий с классом «goodmailfloatingbox», поэтому Badguy просто пишет, а fakelogin получает атрибут position: fixed. Это не очень хорошо объяснено, но я надеюсь, что вы поймете, что требуется.

О, да, iframe не вариант.

Так можно ли переопределить существующие определенные стили классов с помощью некоторого кода в середине страницы, чтобы сделать его безопасным И сделать его настолько совместимым с кроссбраузером, насколько это возможно?

Спасибо

1 Ответ

1 голос
/ 29 ноября 2011

Вы можете написать короткий сценарий, который использует document.getElementsByTagName для style и link, и результирующий массив значений можно затем проверить, чтобы убедиться, что все файлы loadede css являются правильными.

Чтобы переопределить существующие определения, просто используйте !important в файле css, и это будет самый доминирующий стиль (для этого типа).

Если вы хотите загрузить его в середине страницы, вы можетеиспользуйте функцию javascript, которая делает то же самое, что и первый абзац, за исключением того, что она удаляет объект, который появляется в теле, и добавляет его к объекту head.Я делаю это, если использую ajax для обновления страницы.

...