Весной стартует сезон найма, успей отхватить свой оффер!

OWASP Браузерные уязвимости

XSS (Cross-Site Scripting)

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

Пример атаки xss атаки

Злоумышленник создаёт ссылку с вредоносным JavaScript, отправляет её жертве по email. Когда жертва нажимает на ссылку, код JS выполняется в её браузере, что позволяет украсть учётные данные, сессии или выполнить другие вредоносные действия.

Способы защиты от XSS атаки

  • Content Security Policy (CSP): Создайте список разрешённых источников контента, ограничив загрузку только с доверенных доменов.
  • Не использовать eval() и dangerouslySetInnerHTML: Эти методы позволяют выполнять произвольный код, что открывает уязвимости.
  • HttpOnly cookies: Устанавливайте cookies с атрибутом HttpOnly, чтобы предотвратить доступ к куки через JavaScript.
  • Санитизация ввода: Очистка входных данных от вредоносных скриптов с помощью экранирования, чтобы предотвратить их выполнение.

Виды XSS

  • Сохраняемый XSS: Вредоносный код сохраняется в базе данных и выполняется на странице при последующем запросе.
  • Отражённый XSS: Скрипт не сохраняется, а передается через URL или параметры запроса. Когда сервер возвращает страницу с этим скриптом, он выполняется в браузере жертвы.
  • XSS на основе DOM: Вредоносный скрипт внедряется в клиентский JavaScript код через уязвимости DOM, без изменений на сервере.

CSRF (Cross-Site Request Forgery)

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

Способы защиты от CSRF атаки

  • Использование CSRF токенов: Генерация уникального токена для каждого сеанса пользователя. Этот токен должен быть включён в форму или запрос и проверяться сервером.
  • Использование HTTPS: Защищённые соединения предотвращают перехват и модификацию данных.
  • SameSite Cookies: Установите атрибут SameSite для cookies, чтобы предотвратить их отправку с кросс-доменных запросов.

Использование устаревших (deprecated) npm пакетов

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

Способы защиты

  • Регулярно обновляйте пакеты и зависимости.
  • Используйте инструменты, такие как npm audit для проверки пакетов на наличие уязвимостей.
  • Предпочитайте использовать поддерживаемые и активно обновляемые пакеты.

Инъекции SQL/NOSQL

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

NOSQL инъекции — похожие атаки, но для баз данных NoSQL, например, MongoDB.

Способы защиты от SQL/NOSQL инъекции:

  • Использование подготовленных запросов (prepared statements): Эти запросы обеспечивают безопасное взаимодействие с базой данных и предотвращают инъекции.
  • Санитизация ввода: Все данные, полученные от пользователей, должны быть проверены и очищены.
  • ORM (Object-Relational Mapping): Использование ORM-фреймворков, которые автоматически защищают от инъекций.

Man-in-the-Middle (MITM)

Атака MITM заключается в перехвате, подмене или прослушивании трафика между клиентом и сервером. Злоумышленник может получить доступ к конфиденциальной информации или изменить данные в процессе передачи.

Способы защиты от MITM:

  • Использование HTTPS: HTTPS защищает данные с помощью TLS, что делает данные недоступными для перехвата или модификации.
  • SSL/TLS сертификаты: Убедитесь, что используете действующие сертификаты для установления защищённых соединений.
  • HSTS (HTTP Strict Transport Security): Этот механизм принудительно заставляет браузеры использовать только HTTPS для доступа к вашему сайту.

Clickjacking - Атака на подмену кликов

Clickjacking — это атака, при которой злоумышленник накладывает скрытые элементы интерфейса на видимые, заставляя пользователя взаимодействовать с ними, не осознавая этого. Это может привести к выполнению нежелательных действий (например, нажатие кнопки "подтвердить оплату").

Способы защиты от Clickjacking:

  • X-Frame-Options: Установите заголовок X-Frame-Options на значение DENY или SAMEORIGIN, чтобы предотвратить встраивание вашего сайта в iframe.
  • Content-Security-Policy (CSP): Используйте CSP для ограничения источников контента и предотвращения встраивания в фреймы.
  • Реализация защиты от кликов: Используйте механизмы, такие как challenge-response, для защиты от несанкционированных действий.