Client-side SQL injection
Что такое клиентская SQL‑инъекция?
Уязвимости клиентской SQL‑инъекции возникают, когда скрипт небезопасным образом включает контролируемые атакующим данные в клиентский SQL‑запрос. Злоумышленник может использовать эту уязвимость, чтобы сконструировать URL, который при посещении выполнит произвольный SQL‑запрос в локальной SQL базе данных браузера пользователя.
Каковы последствия клиентской SQL‑инъекции?
Потенциальное воздействие уязвимости зависит от того, как веб‑сайт использует SQL базу данных. Если база данных используется для хранения конфиденциальных данных, например сообщений в социальной сети, злоумышленник может получить эти данные. Если база данных используется для хранения ожидающих выполнения действий пользователя, например исходящих сообщений в почтовом приложении, злоумышленник может изменить эти данные и выполнить произвольные действия от имени пользователя.
Какие приёмники могут привести к клиентской SQL‑инъекции?
Функция базы данных JavaScript executeSql() может приводить к уязвимостям клиентской SQL‑инъекции.
Как предотвратить клиентские SQL‑инъекции на основе DOM
В дополнение к общим мерам, описанным на странице DOM-based, убедитесь, что вы используете параметризованные запросы для любого доступа к базе данных. Этот метод использует два этапа для безопасного добавления потенциально загрязненных данных в SQL‑запросы:
Приложение задаёт структуру запроса, оставляя плейсхолдеры для каждого элемента пользовательского ввода.
Приложение задаёт содержимое каждого плейсхолдера. Поскольку структура запроса уже определена на первом шаге, некорректные данные на втором шаге не могут повлиять на структуру запроса.
В API JavaScript executeSql() параметризованные элементы могут указываться внутри строки запроса с использованием символа параметра ?. Для каждого параметризованного элемента в API передаётся дополнительный параметр, содержащий значение этого элемента. Чтобы избежать появления уязвимостей из‑за изменений в других частях кодовой базы приложения, настоятельно рекомендуется параметризовать любой переменный элемент данных, включаемый в запросы к БД.
Last updated