2015-05-22 2 views
3

Определение SQL InjectionЧто делает приложение для Android уязвимым для SQL-инъекции?

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

Как SQL Injection влияет на Android O.S

SQLite используется в Android программы и приложения полностью работоспособны базы данных, так же, как SQL Server или MySQL поле они могут быть восприимчивы к SQL инъекции. SQL-инъекция обычно работает путем добавления данных в строку запроса или добавления данных в поле формы; предоставить хакерам доступ к базе данных или несанкционированным входам. SQL Injection обычно используется для атаки веб-представлений или веб-службы, но ее также можно использовать для атаки.

Основная причина уязвимости SQL Injection связана с использованием динамических или конкатенированных SQL-запросов. Если SQL-запросы создаются путем объединения введенных пользователем входов; Затем пользователь может снабжать векторы атаки SQL вместо действительных входов и манипулировать бэкэнд-SQL-запросом.

Процесс впрыска работает, преждевременно завершая текстовую строку и добавляя новую команду. Поскольку вставленная команда может иметь дополнительные строки, добавленные к ней перед ее выполнением, введенная строка заканчивается знаком комментария «-». Последующий текст игнорируется во время выполнения.

Мой вопрос

Хотя я понимаю, что SQL Инъекции и как SQL Injection может иметь место. Я не знаю , какие факторы делают выбор кода Android уязвимым для такой атаки.

+0

SQL в sqlite на android вряд ли удастся добиться многого, так как по определению он изменяет/обходит данные, которые являются УЖЕ на устройстве пользователя.но его можно было бы использовать (скажем), чтобы обойти paywall в демонстрационной версии бесплатного приложения и разблокировать его. это было бы катастрофой. «zomg, кто-то не наблюдает за моими глупыми рекламными объявлениями пениса» –

+0

это происходит, если вы непосредственно выполняете запрос с пользовательским вводом без предварительной дезинфекции. SQL.Execute («SELECT * FROM USERS WHERE name» + mytextview.gettext.tostring()) –

+0

[Тот же вопрос по Security.SE] (http://security.stackexchange.com/q/89897/539) – Gumbo

ответ

3

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

5

SQL-инъекция не зависит от Android.

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

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

0

Я бы сказал, что то, что делает приложение Android уязвимым для SQL Injection, является плохим использованием или настройкой Content Providers в Android.

Я написал BlogPost об этом недавно, где я объясняю пример, чтобы ввести SQL в поставщиках Android контента для получения данных и как защититься от такого рода атак, взглянуть на него: инъекции link