Comments 28
В каких ситуациях вообще может понадобится менять размер посещенной ссылки? Это сделает UI менее постоянным, вследствии чего ухудшится UX
Если очень нужно, JS как всегда приходит на помощь в подобных ситуациях:
<a
href="https://habr.com/"
target="_blank"
onclick="this.classList.add('visited-link')"
>link text
</a>
.visited-link {
font-size: 35px;
}
По мне так знания о непрямых атаках развивают мышление. Заставляют задумываться о последствиях казалось бы безобидных решений.
Помимо того, что нельзя изменить размер шрифта, нельзя изменить и сам шрифт и его начертание и много чего ещё, что имело бы смысл в дизайне.
«В каких ситуациях» — в ситуации когда злоумышленник хочет узнать какие сайты вы посещаете.
Если бы эта уязвимость работала, злоумышленник мог бы разместить на своём сайте 100500 ссылок, которые хочет проверить, и мог бы увидеть какие ссылки у посетителей отмечались бы другим цветом или размером.
JS вам в этом никак не поможет.
Неужели в CSS нет более интересных и часто встречаемых проблем, о которых можно написать статью? Grid? Flex?
В CSS, как кажется, порой проблем больше, чем решений. И уж про Grid, Flex, а также про много других подходов писали, и не раз, или я не прав? Но почему бы на Хабре (где вообще пишут обо всем, за уши притягивая тему к словам «ит» и «гик», как в том анекдоте про рыбу и блох) не описать такую вот тему, тем более что она, и правда, имеет очень интересную причину — я про откровенно, как кажется, нелогичное поведение браузера, идущее не от бага, а от логики безопасности? И лично мне, кстати, было очень интересно узнать об этом поведении, поскольку проблему, которую оно решает, я как раз считаю очень серьезной.
PS: нашел ответ на reddit, без защиты сторонний скрипт мог бы нарисовать невидимый блок с тысячами ссылок и проверить были ли они посещены или нет.
Вы не переходили на какую-либо страницу с текущей. Вы посещали ее когда-то давно, но браузер меняет стиль на :visited
.
Я вижу это так:
Можно сделать вывод, что я посещал главную Хабра и Ютуба когда-то. Хотя я не нажимал непосредственно на эти ссылки сейчас, обработчик бы не сработал.
Попробовал только что поиграться с html2canvas.js — браузер не отдает в читаемый канвас свойства псевдоэлемента :visited.
Именно так, «изоляцией Ржевского в гусарской балладе», собираются решать проблему посещенных ссылок в будущем. Но пока уже много лет есть существующее решение, браузеры стремятся хотя бы его поддерживать единообразно. И в этом, имхо, правы.
А отправлять на сервер небезопасные данные через CSS, конечно, незачем, но не всегда вас об этом спрашивают..;)
Почему нельзя установить размер шрифта у посещенной ссылки