Pull to refresh

Comments 52

лично меня не сильно задене но спрошу: что со стандартизацией таких вещей?
UFO just landed and posted this here
ага, хорошо бы стандартизировать список CSS-свойств, которые разрешены
Это просто пипец, дорогая редакция. Не могут устранить уязвимость, страдает верстка. Что дальше, отменят background у body? Может вообще убрать поддержку javascript? Может стоит подумать и найти решение попроще?
Почему не могут. Вот как раз устраняют. Или вы не в курсе, в чем суть уязвимости?
Я в курсе.

Неужели нельзя разделить внешнее представление и то, что отдает скрипт? Ведь часть параметров все-таки оставили.

Нельзя же просто так взять, и что-то перестать поддерживать или придумывать какие-то свои схемы. Это дорога к IE ранних версий.
Как вы себе представляете разделение внешнего вида? Любой из не запрещенных параметром даст изменение размеров, что будет легко вычислено скриптом.
Да, было бы интересно узнать что такого в background-color: transparent.
Хотя, скорее имелось ввиду что (полу)прозрачность нельзя использовать именно с функциями rgba/hsla. Но вопрос всё равно открыт.
Хороший вопрос. Затрудняюсь ответить.
Можно накрыть canvas'ом и проверить попиксельно.
Да вариантов тысячи. Я вот и говорю, что не стоит делать ограничения со стороны CSS. Все равно это не выход.
А foreground color нельзя так же проверить?
Ёлки… в таком свете все эти изменения выглядят сомнительно (по крайней мере запрет на фоновое изображение).
В современном CSS и JS слишком много возможностей, всё перекрыть вряд ли получится. Разве что два dom-дерева держать — одно для показа, второе для обработки браузером :)
И у вас будет прозрачный пиксель канвы. Она же не рендирит на себя изображение, она обычный полупрозрачный элемент.
По-моему, ограничения на CSS — очень плохое решение
UFO just landed and posted this here
о ужас… кто-то узнает какие страницы я посещал х)))
UFO just landed and posted this here
«параноик» звучит куда солидней, чем «идиот»
UFO just landed and posted this here
Очень странное решение.
Вообще для использования уязвимости достаточно изменения хотя бы 1 параметра, например, цвета. Все остальное ничего не изменит, ни добавит, ни убавит. То есть надо либо все отключать, либо все оставлять.
Если так озабочены безопасностью, то сделали бы, чтобы функция getComputedStyle для ссылок на другие домены и не поддомены данного возращала какую-то ерунду. Либо сделайте ограничение на 500 вызовов. Все равно ничего толком не проверишь за эти 500 вызовов.
UFO just landed and posted this here
getComputedStyle не единственный способ узнать посещена ли ссылка. И даже менее неудобный. Достаточно что-то вроде

CSS:
a:visited { display: none; }

JS:
alert(a.offsetWidth? 'Не посещена': 'Посещена');

Поэтому и вырубают свойства, влияющие на layout.
Как вариант, это можно реализовать в Noscript, как только при парсинге встречается эта функция выдается предупреждение. Можно добавить сайт в вайтлист. Тем более, предупреждение позволит оценить ситуацию: откуда получена ссылка и т.д. Но это слишком навороченный вариант для обычных пользователей.
то сделали бы, чтобы функция getComputedStyle для ссылок на другие домены и не поддомены данного возращала какую-то ерунду.
А они не так по вашему сделали?
Видимо не все сами сообразить могут, нужно развернут мысль:
Если будет возвращать ерунду в прямом смысле, это легко детектится — цвет должен быть синий, а возвращает коричневый, записываем как посещенную. А сейчас для всех ссылок возвращается такой цвет, как для не посещенных и поэтому детектировать посещенность нельзя.
UFO just landed and posted this here
Если отображаться всё будет «как надо», то злоумышленник может легко проверить ссылки в обход «врущих» функций.
UFO just landed and posted this here
Тогда для js прикаждом обращении к дому придется делать рефлоу, либо вести 2 лейаута параллельно. Помимо того, что это просто затратно, это может повлечь такие клюки, что волосы у разработчиков зашевелятся. (элемент на экране есть, а черех js он не видим, или на строку перенесся)
UFO just landed and posted this here
Это убогий способ, никогда так не делайте.
Лучше сделайте нормальную реализацию хотя бы CSS2… IE и тот вас обходит.(чисто субъективное мнение)
Про свое «субъективное мнение» ты отлично подметил, да...)
UFO just landed and posted this here
UFO just landed and posted this here
Не вижу проблем в Опере 9.6 и 10.5, аналогично ие8. А в хроме да, что-то не так.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Субьективно, как web-разработчик, просто уже устал костыли ему ставить. Особенно если через аякс динамически элементы добавляю.
Это первоапрельская шутка? ;)
Если мы оставляем хотя бы один аттрибут для стилизации, то проблем проверить ссылки — никаких. Даже если браузер будет «скрывать» реальные данные. Всё очень просто! Делаем в DOM тег A, делаем ему :visited цвет какой-то. Браузер рисует нужным цветом, но getComputedStyle нам его не возвращает. Что ж. Не беда!

Шаг второй. Этот тег A заворачиваем в SVG, SVG грузим как картинку в Canvas, читаем цвет пикселей. Вот мы и обошли ограничение браузера. Хоть и немножко гемморно.

Правда в IE не будет работать скорее всего и в Opera 10.5+.
Тю ты хоспади. Не проще ли применить более очевидное решение: подсвечивать посещённые ссылки в рамках одного домена. Ну, то есть, там где ты кликнул на ссылку, там она и изображается как посещённая. Тем более, что для такого решения существует наработанная база: принцип немногим отличается от принципа хранения кукисов. Это, конечно, тоже ограничение, но всё же не на CSS.
Sign up to leave a comment.

Articles