2013-03-13 2 views
0

У меня есть конкретный вопрос для безопасности Android.Безопасность Android: сохранение частной строки

Во-первых, я плохо описал свою проблему: Я хочу подключиться к базе данных через PHP. Но каждый может извлечь ссылку из моего apk, которую я использую для подключения к файлу PHP. Это приводит к проблеме: каждый может манипулировать моей базой данных, просто позвонив по этой ссылке. Я хочу предотвратить SQL Injection.

Я ищу решение этой проблемы. Моей первой идеей и, вероятно, самым простым было создание полностью частной строки, которая используется для аутентификации доступа к файлу PHP. Но я понятия не имею, как я могу сохранить такую ​​String, не рискуя получить извлечение из кода (например, whit the Strings.xml или просто написать его в моем коде). Есть ли простой способ сделать String полностью закрытым в моем APK (чтобы никто не смог его извлечь)? Или у кого-нибудь еще лучшее решение?

ответ

1

Нет реальной защиты от обратного проектирования вашего приложения и выяснения «секретного» URL-адреса.

Я рекомендую вам защитить этот URL с какой-либо аутентификацией пользователя. url должен быть защищен независимо от того, какой клиент пытается получить к нему доступ.

+0

Когда пользователь должен аутентифицироваться (например, указывая имя пользователя и пароль), он может легко манипулировать данными. Делая это так, я мог реагировать только послесловие и восстанавливать неавтоматизированные данные (но спасибо за ваш быстрый ответ). – user2167430

+1

Кажется, вам нужно инкапсулировать ваш API на сервер лучше. Подумайте о каждом вызове API как о злонамеренном. – Sean

0

Все, что хранится в клиенте, может быть восстановлено/подделано/и т. Д. Перед запуском команд с базой данных необходимо, чтобы клиент аутентифицировался на сервере.

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

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

+0

есть идея, как я могу аутентифицировать клиента на сервере? – user2167430

+0

может быть учебник или что-то еще? Это было бы очень полезно :) – user2167430

+0

@ user2167430 существует множество способов аутентификации клиента. Обычный способ - указать имя пользователя и пароль. Я бы не сделал доступ к миру базы данных, но вместо этого у меня бы появился веб-сервис RESTful, который обрабатывает аутентификацию для вас, а затем аутентифицируется в базе данных. –