Судя по статистике большинство ресурсов в интернете уязвимы для различных client-side атакам. И из этого следует, что довольно не часто разработчики задумываются об угрозах. Рассмотрим некоторые виды атак для фронтенда, библиотек (фреймворков) и примеры. XSS (Cross-Site Scripting) Самая популярная уязвимость на фронтовой части т.к при попадании кода злоумышленника в ДОМ дерево и получив возможность выполнять […]
просмотры 388🕑 4 мин. чтения
Судя по статистике большинство ресурсов в интернете уязвимы для различных 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 запросами. Самый популярный пример для вывода вводимых данных является поиск на сайтах:
А как взламывают? Вам присылают на почту (куда угодно) ссылку на сайт которому вы доверяете, но у сайта не предусмотрена корректная валидация и позволяет выполнить любой 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 который потенциально может получить сообщение от стороннего ресурса и если неправильно обработать.
Рассмотрели виды уязвимостей со стороны client side могут украсть некоторые данные, сделать так, чтобы пользователь перешел на сайт злоумышленника и в некоторых случаях подменить формы, чтобы украсть регистрационные данные.
Kotlin 2.1.0: новые возможности языка, улучшения инструментов и рост производительности
Разработчики из JetBrains объявили о выпуске Kotlin 2.1.0, который привнес множество полезных обновлений в язык, инструменты и производительность. Новая версия обещает упростить разработку и повысить гибкость для программистов.
Dev новости: Astro 5.1, новый компилятор в rust, WebAssembly поддержка во flutter
Команда Astro порадовала разработчиков очередным релизом — 19 декабря увидела свет версия Astro 5.1. Как сообщил один из основных разработчиков проекта, Мэтт Кейн, в обновлении представлены несколько важных новшеств. Среди них — экспериментальная поддержка сессий и более эффективное кеширование изображений, включая работу с удалёнными ресурсами.
В июне 1974 года состоялся первый выпуск языка SQL. Он был разработан Дональдом Д. Чемберлином и Раймондом Ф. Бойсом в IBM, основываясь на реляционной модели, предложенной Э.Ф. Коддом. SQL, что расшифровывается как Structured Query Language, стал наиболее распространенным языком для работы с базами данных, и до сих пор имеет множество диалектов, последний из которых — SQL 2023.
Deno 1.40: будущий Temporal API и декораторы JavaScript
В Deno 1.40 реализовали предстоящий Temporal API JavaScript для расширенных операций с датой и временем, а также новейшее предложение декораторов JavaScript для мета- и аспектно-ориентированного программирования.