Что такое SQL-инъекция?

SQL-инъекция

SQL расшифровывается как язык структурированных запросов и является специфичным для предметной области языком, предназначенным для управления данными в системе управления реляционными базами данных (RDMS) и для обработки потоков в системе управления реляционными данными (RDSMS). Два основных преимущества этого языка заключаются в том, что он обеспечивает доступ к нескольким записям с помощью одной команды и избавляет администраторов от необходимости указывать способ получения записи. На данный момент язык произвел революцию в операциях чтения / записи для баз данных и стал популярным выбором для RDMS и RDSMS.

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

Типы SQL-инъекций

Существует четыре основных типа уязвимостей безопасности, которые могут привести к атаке SQL-инъекции. Одной из этих уязвимостей является неправильная фильтрация escape-символов пользовательского ввода, которая затем передается в оператор SQL. Это означает, что затронутый оператор SQL потенциально может быть обработан в базе данных конечным пользователем приложения.

Неправильная обработка типов является еще одной уязвимостью безопасности, которая дает возможность атаковать инъекцией SQL. Это когда пользовательское поле не является строго типизированным или проверено на наличие ограничений типа. Под этим подразумевается, что поле может быть предназначено для определенного типа данных; например, целое число, но сам программист не сделал никаких проверок, чтобы фактически подтвердить, что-то, что пользователь вводит в поле, на самом деле является целым числом.

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

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

Смягчение

Несмотря на возможную серьезность атаки SQL Injection, это все еще очень распространенный тип внедрения кода, который легко смягчить и предотвратить правильные действия.

Параметризованные операторы являются общими для большинства платформ разработки и могут использоваться вместо непосредственного встраивания пользовательского ввода в операторы. Это означает, что заполнитель в выражении может хранить только значение определенного типа и, следовательно, ; любые попытки SQL-инъекции просто приведут к введению странного или неверного параметра.

Побег это еще один метод; хотя и подверженный ошибкам, который экранирует символы, имеющие какое-то особое значение в SQL. Руководство по системе управления базами данных SQL (СУБД) фактически предоставляет разработчикам список этих символов, что позволяет сделать это возможным.

Проверка шаблона может быть выполнена для проверки целочисленных, плавающих, логических и строковых параметров, чтобы убедиться, что их значение является допустимым для их типа. Даже строки, которые должны следовать некоторому строгому шаблону (UUID, date и т. Д.), Могут использовать это, чтобы проверить, соответствует ли их значение шаблону.

Права доступа к базе данных также могут быть ограничены, когда можно также выполнить вход в веб-приложение, чтобы смягчить последствия внедрения SQL-кода.

0 0 vote
Article Rating
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments