Основные моменты для безопасности HTML и CSS

Если вы разработчик и пишете на HTML/CSS, вам нужно знать основные моменты, которые касаются безопасности. Кто-то может сказать, что HTML и CSS не могут быть объектом атаки злоумышленников, но с развитием веб-технологий у них для атаки появляются все больше возможностей. В сегодняшней статье мы рассмотрим самые важные моменты, на которые следует обратить внимание каждому разработчику. Они помогут следовать лучшим методикам безопасности и избежать уязвимостей.

Лучшие практики для безопасности

Тщательно проверяйте зависимости, используемые в вашем приложении

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

Детальнее: https://github.com/dxa4481/cssInjection

Выполняйте не только локальную проверку

Браузерная проверка пользовательского ввода (в теге <input>) становится все более мощной, а в HTML есть некоторые механизмы и свойства, которые могут быть очень полезны для создания первого базового уровня проверки. Но вы не можете полагаться только на проверку браузером пользовательского ввода. Вам также нужна проверка и на стороне сервера для чувствительных действий (аутентификация, очистка, валидация и т.д.).

Также никогда не доверяйте пользовательским данным. Это, пожалуй, самая важная вещь, которую вы можете сделать, чтобы предотвратить множество атак с использованием уязвимостей HTML/CSS. Слабая или отсутствующая очистка ввода может сделать ваше приложение уязвимым для XSS инъекций. Если вы используете пользовательский ввод для генерации HTML, JSON, CSS и т.д., используйте для этого надлежащие экранирующие функции.

Не используйте комментированный код на сайте

Старайтесь не использовать комментарии в коде на рабочем сайте. Довольно просто просмотреть такой код с помощью инспектора в браузере. Опасность здесь заключается в том, что закомментированный контент может содержать конфиденциальную информацию.

Используйте политику безопасности контента (CSP)

Каждый скрипт или виджет, который вы вставляете на свой сайт, является объектом атаки. Вы можете использовать Политику безопасности контента (CSP), чтобы защитить свое приложение от потенциальных атак, определив ресурсы, которые вы разрешаете/запрещаете загружать. Вы можете использовать nonce, чтобы переопределить ограничения в директивах для старого кода.

Детальнее: https://developer.mozilla.org/ru/docs/Web/HTTP/CSP

Будьте в курсе последних новостей о безопасности HTML

Интернет-экосистема развивается быстро, и ежедневно появляются новые функции и улучшения безопасности. Настоятельно рекомендуется быть в курсе последних новостей, чтобы обеспечить безопасность вашего приложения.

Безопасный HTML

Используйте тег rel="noopener noreferrer" для внешних ссылок

Когда вы нажимаете на ссылку с атрибутом target="_blank", новая вкладка/окно будет иметь доступ к объекту window.opener, который указывает на объект window первой страницы и который может быть изменен. Чтобы предотвратить это, добавьте атрибут rel="noopener", чтобы избежать передачи объекта window в новое окно. Атрибут rel="noreferrer" использовался в более старых браузерах, и выполнял ту же функцию. Атрибуты указывают на то, что при переходе по ссылке не должно быть утечки информации о реферере (источнике).

Детальнее: https://html.spec.whatwg.org/multipage/links.html#link-type-noreferrer

Не используйте статические идентификаторы (ID) в своих формах

Избегайте использования атрибутов «id» в формах (<form>).

Использование идентификаторов может вызвать проблемы со старыми браузерами. Не рекомендуется использовать идентификаторы в формах из-за опасности XSS (Cross-Site Scripting — «межсайтовый скриптинг»).

Детальнее: https://html5sec.org/#1

Помещайте фреймы iframe в песочницу

Плавающие фреймы тега iframe довольно популярны и требуются для многих виджетов, которые поставляются сторонними разработчиками. Чтобы убедиться, что они не могут сделать ничего вредного, рекомендуется установить для них ограничения. Старайтесь всегда использовать атрибут песочницы (sandbox) или дополнительные флаги, такие как allow-forms, allow-popups и т.д.

Детальнее: https://www.html5rocks.com/en/tutorials/security/sandboxed-iframes/

Безопасный CSS

Удалите неиспользуемые CSS стили

Исходный код может иногда скрывать полезные советы или, что еще хуже, конфиденциальные функции или данные. Мы часто думаем об удалении контента из HTML, но не нужно забывать и о CSS. Здесь вы найдете описание подходящего для очистки ненужных стилей инструмента.

Не скрывайте конфиденциальный контент с помощью CSS

Есть несколько способов скрыть контент в CSS. С помощью свойств display, opacity, visibility и transform вы легко сможете визуально скрыть содержимое своей страницы.

Но будьте осторожны с контентом, который вы скрываете. Вы должны убедиться, что он не содержит конфиденциальных данных или действий.

Не полагайтесь только на свойство pointer-events

Свойство pointer-events позволяет вам решить, какой элемент может быть целью событий мыши. Обычно указатели-события устанавливаются в pointer-events: none, чтобы отключить поведение элемента. Но в случае чувствительных действий (например, отправка формы и т.д.), блокировка действий должна быть реализована на стороне сервера.

Детальнее: https://developer.mozilla.org/ru/docs/Web/CSS/pointer-events

Проверьте свой код с помощью валидатора

Проверьте ваш HTML/CSS код с помощью валидатора. Вы также можете использовать такие инструменты, как Lighthouse, которые порекомендуют вам другие передовые практики разработки.

Детальнее:

https://developers.google.com/web/tools/lighthouse/

https://jigsaw.w3.org/css-validator/

https://validator.w3.org/

На сегодня все. Спасибо, что читаете нас!

Tags: CSS3HTML5

Recent Posts

Отопление и горячая вода – когда нужно, а не когда соизволят включить

Тепло в доме и горячая вода в любое время для многих жителей многоквартирных и частных… Read More

19/09/2020

Инструкция по скачиванию видео с сервиса TikTok (бесплатно и без watermark)

Если вы еще не слышали о TikTok, тогда рекомендуем вам сначала ознакомиться с этим кратким… Read More

17/09/2020

Что есть в бюджетном ноутбуке – на какие характеристики рассчитывать?

Прошли те времена, когда приличный ноутбук стоил от 1000 долларов. Сегодня можно купить довольно неплохой… Read More

16/09/2020

Что лучше – цифровое телевидение Т2 или интернет-телевидение?

Современную жизнь невозможно представить без телевидения. Оно позволяет узнавать о событиях в Украине и мире,… Read More

02/09/2020

Гипоаллергенная подушка. Для чего она важна?

Сейчас найдется мало людей, у которых нет аллергии на продукты или пыльцу растений. Считается, что… Read More

28/08/2020

Футбольный Инстаграм: что нового у топовых футболистов

Некоторые известные футболисты тщательно скрывают свои личную жизнь, а другие - активно постят фотографии с… Read More

24/08/2020