OWASP виды уязвимостей для фронтенда

Судя по статистике большинство ресурсов в интернете уязвимы для различных client-side атакам. И из этого следует, что довольно не часто разработчики задумываются об угрозах. Рассмотрим некоторые виды атак для фронтенда, библиотек (фреймворков) и примеры. XSS (Cross-Site Scripting) Самая популярная уязвимость на фронтовой части т.к при попадании кода злоумышленника в ДОМ дерево и получив возможность выполнять […]

Судя по статистике большинство ресурсов в интернете уязвимы для различных client-side атакам. И из этого следует, что довольно не часто разработчики задумываются об угрозах. Рассмотрим некоторые виды атак для фронтенда, библиотек (фреймворков) и примеры.

XSS (Cross-Site Scripting)

Самая популярная уязвимость на фронтовой части т.к при попадании кода злоумышленника в ДОМ дерево и получив возможность выполнять код на стороне пользователя, можно сделать различные атаки. А на стороне клиента хранится сессия, куки, storage. и всё это становится доступным!

XSS делится на 3 части:

1. Stored XSS

Так называемое персистентное XSS — это уязвимость которая срабатывает при взаимодействии с приложением которое хранило в себе какие-либо не валидированные данные (с инъекцией JS). Например, пользователь вводит комментарий с содержимым:

<script>alert("любой js код, который будет выполняться у каждого пользователя")</script>
// в Vue.js потенциально опасный код может вызывать директива v-html
// в React.js метод dangerouslySetInnerHTML (само название говорит о себе)

И если сервер не экранирует и никак не обрабатывает введенный текст, а client side выводит как HTML, то опубликованный комментарий будет выполнять JS код. Конечно же кроме комментария, могут быть и любые другие input поля который позволяет сохранить форма на сервер.

2. Reflected XSS

Называют не персистентным XSS и уязвимость появляется на сайтах моментально на ввод пользователя. Отличие от Stored XSS, это то, что инъекция js не хранится в БД, а выводится моментально пользователю, но точно такая же в плане защиты и обработки данных введённых пользователем (защиты нету). Происходить это может как с GET, так и с POST запросами. Самый популярный пример для вывода вводимых данных является поиск на сайтах:

сайт-которому-я-доверяю.рф/page.php?search=<script>alert("Вас взломали")</script>

А как взламывают? Вам присылают на почту (куда угодно) ссылку на сайт которому вы доверяете, но у сайта не предусмотрена корректная валидация и позволяет выполнить любой JS код, как только пользователь зайдет на страницу.

DOM-Based XSS

Уязвимость связана только с DOM и наверное в настоящее время практически не встречается. Фактически это тоже как и Reflected XSS связано с URL, но не связано с сервером, а с нативным js где в теории URL (GET параметры или HASH) попадает напрямую в обработку например метода document.write или eval. И получается XSS.

<script> document.write(location.href); </script>
or
// вы перешли на url https://site.ru/#https://www.evil.net
to = location.hash.slice(1)
if (to.startsWith('https:')) {
  location = to;
}

Стоит добавить ещё к возможным уязвимостям это Web Messaging API который потенциально может получить сообщение от стороннего ресурса и если неправильно обработать.

Основные опасные методы у javascript

document.write()
document.writeln()
document.domain
element.innerHTML
element.outerHTML
element.insertAdjacentHTML
element.onevent

И основные потенциальные цели взлома в браузере:

document.URL
document.documentURI
document.URLUnencoded
document.baseURI
location
document.cookie
document.referrer
window.name
history.pushState
history.replaceState
localStorage
sessionStorage
IndexedDB (mozIndexedDB, webkitIndexedDB, msIndexedDB)
Database

Итого

Рассмотрели виды уязвимостей со стороны client side могут украсть некоторые данные, сделать так, чтобы пользователь перешел на сайт злоумышленника и в некоторых случаях подменить формы, чтобы украсть регистрационные данные.

Читайте также
В США создают консорциум для регуляции AI
В США создают консорциум для регуляции AI
В США создают консорциум для регуляции AI

США хотят ограничить разработку AI попыткой регулировать

Облачный сервис Azul находит «мертвый» код в Java-приложениях
Облачный сервис Azul находит «мертвый» код в Java-приложениях
Облачный сервис Azul находит «мертвый» код в Java-приложениях

Azul описывает «мертвый» код как исходный код, находящийся в кодовой базе приложения, но не используемый им.

Dev новости: React 19, Bun приходит в Angular и GitHub AI Fund
Dev новости: React 19, Bun приходит в Angular и GitHub AI Fund
Dev новости: React 19, Bun приходит в Angular и GitHub AI Fund

React 19 вот-вот выйдет, спустя два года после выхода предыдущей версии, а еще обновления Angular и Astro, а также фонд искусственного интеллекта на GitHub.

Библиотека JavaScript/React позволяет разработчикам создавать чат-боты с искусственным интеллектом
Библиотека JavaScript/React позволяет разработчикам создавать чат-боты с искусственным интеллектом
Библиотека JavaScript/React позволяет разработчикам создавать чат-боты с искусственным интеллектом

Фронтенд-библиотека NLUX поставляется с адаптерами для ChatGPT и больших языковых моделей Hugging Face. Она также поддерживает персонализацию.