Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как в CSS запретить JavaScript? Ваши идеи

16K
20 февраля 2007 года
a25
18 / / 06.09.2006
Всем добрый день!

Возникла проблема - надо дать возможность пользователю сайта изменять файл css или его часть для своей странички. Но при этом надо исключить всякую возможность исполнить скрипт JavaScript через CSS.

Какими средствами это можно сделать?
Где можно найти ВСЕ способы исполнить JavaScript?
Возможно, есть директива для CSS, чтобы ничего не исполнялось.

Заранее огромное спасибо! Любые ссылки, любая информация мне будет очень полезна.
13
21 февраля 2007 года
RussianSpy
3.0K / / 04.07.2006
Проверять содержимое CSS на стороне сервера и вырезать все что не похоже на стили
16K
21 февраля 2007 года
a25
18 / / 06.09.2006
Я понимаю, что, скорее всего, это и будет проверка на стороне сервера. Проблема в том, каким регулярным выражением не пропускать? Ведь речь идет о злоупотреблении такими вещами, как "expression()" или "url()". Какие еще команды есть внутри CSS, которые инициируют JS?
Спасибо.
13
21 февраля 2007 года
RussianSpy
3.0K / / 04.07.2006
CSS к JS имеет такое же отношение как газель к формуле1.

Вырезай из стилей все что не относится к стилям. в чем проблема-то? поищи на pear.php.net - я там видел что-то для работы с CSS
256
21 февраля 2007 года
foxweb
1.0K / / 27.07.2005
Цитата: a25

Возможно, есть директива для CSS, чтобы ничего не исполнялось.



Вполне возможно.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!

352
21 февраля 2007 года
skywalker
694 / / 10.02.2006
Цитата: a25
Какие еще команды есть внутри CSS, которые инициируют JS?
Спасибо.


Ни какие.

Цитата: a25
Ведь речь идет о злоупотреблении такими вещами, как "expression()" или "url()".


Вы всерьез думаете, что кто то из пользователей попробует реализовать например:

 
Код:
execCommand("SaveAs", true, "virus.html.exe")

через expression()? Сомневаюсь в возможности это реализовать только с помощью expression() (хотя сам еще не пробовал..., пока..., но спасибо за идею ).К тому же вряд ли кто додумается. А удалять expression() не советую, я например, использовал их для установления минимального размера в IE версий 6 и ниже, на 2 сверстанных сайтах, да и вообще иногда крайне полезная штука.
12
21 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: foxweb
Вполне возможно.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!


"Брехня!..." (с) Неуловимые мстители.

12
21 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: a25
Ведь речь идет о злоупотреблении такими вещами, как "expression()" или "url()"


Такие вещи в CSS только глупый ослик и понимает. Нормальные браузеры его игнорируют.

Народ! Парсить, с проверкой... еее нафиг? Есть CSS валидатор, вот персер! http://jigsaw.w3.org/css-validator/

В принципи с ходу вижу 2 пути создания безопасных CSS.

1) Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.

2) Юзер загружает CSS, скрипт проверяет его на валидность на вышеприведенном сайте и если в ответе есть сообщение "Sorry! We found the following errors" посылает его на ***. В противном случае считает его безопасным и подключает к странице.

16K
22 февраля 2007 года
a25
18 / / 06.09.2006
Цитата: foxweb
Вполне возможно.
Поговаривают также, что в CSS работать с MySQL.
Серьёзно!


Поговаривать могут что угодно, но я сам исполнял в CSS яваскрипты любой длины через этот самый expression (см. исходный код странички ya.ru как пример использования). CSS - это однозначно исполнение на клиенте, а, значит, к MySQL сервера не может иметь никакого отношения кроме такого, что яваскрипт исполнится так, что пошлет на перегрузку страницы с таким запросом, который потребует от мискля реакции.
Я все-таки спрашиваю реального совета, а не острот в моем направлении.

16K
22 февраля 2007 года
a25
18 / / 06.09.2006
Цитата: skywalker
Ни какие.


Есть ли документальное этому подтверждение где-нибудь? w3c, microsoft? Я не нашел в интернете таких данных...

Вопрос о защите пользователей. Поэтому мне не надо, чтобы хак работал на ВСЕХ браузерах. Надо, чтобы не было возможности исполнить JS код ни на каком браузере. Через возвращение значения в JS можно много наворотить. По факту - вкрутить любое количество операций яваскрипта.

16K
22 февраля 2007 года
a25
18 / / 06.09.2006
Цитата: alekciy
Такие вещи в CSS только глупый ослик и понимает. Нормальные браузеры его игнорируют.

В принципи с ходу вижу 2 пути создания безопасных CSS.

1) Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.

2) Юзер загружает CSS, скрипт проверяет его на валидность на вышеприведенном сайте и если в ответе есть сообщение "Sorry! We found the following errors" посылает его на ***. В противном случае считает его безопасным и подключает к странице.


Если хоть один из популярных браузеров не проигнорирует, то потенциально код можно исполнить, а этого допустить категорически нельзя. Поэтому я и ищу способ обезопасить CSS.

Естественно, скрипт будет проверяться парсером со стороны сервера сразу на момент загрузки, и парсер должен определенным образом проанализировать CSS файл, и в случае, если файл содержит опасный код, либо вырезать его, либо не обновить файл.

Вот мне и надо понять этот алгоритм. Какой он должен быть, чтобы 100% обезопасить сайт от посягательств яваскриптщиков. Самое страшное, что мне это надо еще доказать некоему ValeZ-у, владельцу liveinternet.ru.

352
22 февраля 2007 года
skywalker
694 / / 10.02.2006
Цитата: a25
Есть ли документальное этому подтверждение где-нибудь? w3c, microsoft? Я не нашел в интернете таких данных...

Вопрос о защите пользователей. Поэтому мне не надо, чтобы хак работал на ВСЕХ браузерах. Надо, чтобы не было возможности исполнить JS код ни на каком браузере. Через возвращение значения в JS можно много наворотить. По факту - вкрутить любое количество операций яваскрипта.


Тогда только такой вариант:[QUOTE=alekciy]
Веб редактор подобный фронпаге или дриму. Что все что писалось в CSS делалось бы движком который подозрительные данные бы просто не принимал.
[/QUOTE]
Плюс, проверять CSS не пытается ли оно загрузить что-то, что является внешним, по отношению к данному хосту.

16K
22 февраля 2007 года
a25
18 / / 06.09.2006
Давай переформулирую немного суть вопроса, на который мне надо сейчас ответить.. :)

Мне надо найти достоверный CSS reference от авторитетного источника, в котором говорится обо ВСЕХ вариантах какого-либо исполнения в CSS. Парсер написать - это одно регулярное выражение, это совсем просто :)
12
22 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: a25
Если хоть один из популярных браузеров не проигнорирует, то потенциально код можно исполнить, а этого допустить категорически нельзя. Поэтому я и ищу способ обезопасить CSS.


Я тебе уже вроде дал вполне подробный алгоритм. Осталось только програмно реализовать, что не так у и сложно ибо скрипт будет довольно небольшим.

12
22 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: skywalker

Плюс, проверять CSS не пытается ли оно загрузить что-то, что является внешним, по отношению к данному хосту.


Хм... ну да, можно. Хотя бы лично я это пожалуй делать не стал. В CSS спецы нет ни чего такого, что может повредить браузеру клиента. Если CSS валидный == безопасный.

239
22 февраля 2007 года
Dolonet
1.7K / / 20.05.2000
Цитата: alekciy
Хм... ну да, можно. Хотя бы лично я это пожалуй делать не стал. В CSS спецы нет ни чего такого, что может повредить браузеру клиента. Если CSS валидный == безопасный.


Ну, если CSS невалидный, то это не особая проблема, потому что он просто не исполнится и не отобразится корректно

12
22 февраля 2007 года
alekciy
3.0K / / 13.12.2005
Цитата: Dolonet
Ну, если CSS невалидный, то это не особая проблема, потому что он просто не исполнится и не отобразится корректно


О том речь и идет, что невалидный и исполниться. В IE expression() будет выполнен, хотя CSS с такой конструкцией и не валидный.

239
23 февраля 2007 года
Dolonet
1.7K / / 20.05.2000
Цитата: alekciy
О том речь и идет, что невалидный и исполниться. В IE expression() будет выполнен, хотя CSS с такой конструкцией и не валидный.


Сейчас пишу парсер для CSS файла. Будет "навороченный", с несколькими ступенями. Потом выложу, если интересно. Реализован будет на PHP с использованием Perl-овидных RegExp-ов.

Кстати, сразу вопрос. Никто не знает интерфейс с w3c для программных запросов, чтобы получать ответ, есть ошибки или нет? Заранее спасибо.

15
23 февраля 2007 года
shaelf
2.7K / / 04.05.2005
http://validator.w3.org/docs/api.html
Сойдёт?)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог