Как в CSS запретить JavaScript? Ваши идеи
Возникла проблема - надо дать возможность пользователю сайта изменять файл css или его часть для своей странички. Но при этом надо исключить всякую возможность исполнить скрипт JavaScript через CSS.
Какими средствами это можно сделать?
Где можно найти ВСЕ способы исполнить JavaScript?
Возможно, есть директива для CSS, чтобы ничего не исполнялось.
Заранее огромное спасибо! Любые ссылки, любая информация мне будет очень полезна.
Спасибо.
Вырезай из стилей все что не относится к стилям. в чем проблема-то? поищи на pear.php.net - я там видел что-то для работы с CSS
Возможно, есть директива для CSS, чтобы ничего не исполнялось.
Вполне возможно.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!
Спасибо.
Ни какие.
Вы всерьез думаете, что кто то из пользователей попробует реализовать например:
через expression()? Сомневаюсь в возможности это реализовать только с помощью expression() (хотя сам еще не пробовал..., пока..., но спасибо за идею ).К тому же вряд ли кто додумается. А удалять expression() не советую, я например, использовал их для установления минимального размера в IE версий 6 и ниже, на 2 сверстанных сайтах, да и вообще иногда крайне полезная штука.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!
"Брехня!..." (с) Неуловимые мстители.
Такие вещи в CSS только глупый ослик и понимает. Нормальные браузеры его игнорируют.
Народ! Парсить, с проверкой... еее нафиг? Есть CSS валидатор, вот персер! http://jigsaw.w3.org/css-validator/
В принципи с ходу вижу 2 пути создания безопасных CSS.
1) Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.
2) Юзер загружает CSS, скрипт проверяет его на валидность на вышеприведенном сайте и если в ответе есть сообщение "Sorry! We found the following errors" посылает его на ***. В противном случае считает его безопасным и подключает к странице.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!
Поговаривать могут что угодно, но я сам исполнял в CSS яваскрипты любой длины через этот самый expression (см. исходный код странички ya.ru как пример использования). CSS - это однозначно исполнение на клиенте, а, значит, к MySQL сервера не может иметь никакого отношения кроме такого, что яваскрипт исполнится так, что пошлет на перегрузку страницы с таким запросом, который потребует от мискля реакции.
Я все-таки спрашиваю реального совета, а не острот в моем направлении.
Есть ли документальное этому подтверждение где-нибудь? w3c, microsoft? Я не нашел в интернете таких данных...
Вопрос о защите пользователей. Поэтому мне не надо, чтобы хак работал на ВСЕХ браузерах. Надо, чтобы не было возможности исполнить JS код ни на каком браузере. Через возвращение значения в JS можно много наворотить. По факту - вкрутить любое количество операций яваскрипта.
В принципи с ходу вижу 2 пути создания безопасных CSS.
1) Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.
2) Юзер загружает CSS, скрипт проверяет его на валидность на вышеприведенном сайте и если в ответе есть сообщение "Sorry! We found the following errors" посылает его на ***. В противном случае считает его безопасным и подключает к странице.
Если хоть один из популярных браузеров не проигнорирует, то потенциально код можно исполнить, а этого допустить категорически нельзя. Поэтому я и ищу способ обезопасить CSS.
Естественно, скрипт будет проверяться парсером со стороны сервера сразу на момент загрузки, и парсер должен определенным образом проанализировать CSS файл, и в случае, если файл содержит опасный код, либо вырезать его, либо не обновить файл.
Вот мне и надо понять этот алгоритм. Какой он должен быть, чтобы 100% обезопасить сайт от посягательств яваскриптщиков. Самое страшное, что мне это надо еще доказать некоему ValeZ-у, владельцу liveinternet.ru.
Вопрос о защите пользователей. Поэтому мне не надо, чтобы хак работал на ВСЕХ браузерах. Надо, чтобы не было возможности исполнить JS код ни на каком браузере. Через возвращение значения в JS можно много наворотить. По факту - вкрутить любое количество операций яваскрипта.
Тогда только такой вариант:[QUOTE=alekciy]
Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.
[/QUOTE]
Плюс, проверять CSS не пытается ли оно загрузить что-то, что является внешним, по отношению к данному хосту.
Мне надо найти достоверный CSS reference от авторитетного источника, в котором говорится обо ВСЕХ вариантах какого-либо исполнения в CSS. Парсер написать - это одно регулярное выражение, это совсем просто :)
Я тебе уже вроде дал вполне подробный алгоритм. Осталось только програмно реализовать, что не так у и сложно ибо скрипт будет довольно небольшим.
Плюс, проверять CSS не пытается ли оно загрузить что-то, что является внешним, по отношению к данному хосту.
Хм... ну да, можно. Хотя бы лично я это пожалуй делать не стал. В CSS спецы нет ни чего такого, что может повредить браузеру клиента. Если CSS валидный == безопасный.
Ну, если CSS невалидный, то это не особая проблема, потому что он просто не исполнится и не отобразится корректно
О том речь и идет, что невалидный и исполниться. В IE expression() будет выполнен, хотя CSS с такой конструкцией и не валидный.
Сейчас пишу парсер для CSS файла. Будет "навороченный", с несколькими ступенями. Потом выложу, если интересно. Реализован будет на PHP с использованием Perl-овидных RegExp-ов.
Кстати, сразу вопрос. Никто не знает интерфейс с w3c для программных запросов, чтобы получать ответ, есть ошибки или нет? Заранее спасибо.