Защитите HTTP-запрос от вызова другими - PullRequest
4 голосов
/ 18 июня 2010

У меня есть приложение Android, из которого я хочу загрузить некоторые данные в базу данных на моем веб-сервере. Поскольку java-библиотека MySql имеет размер около 5 МБ, я не хочу включать ее в приложение. Поэтому я сделаю HTTP-запрос для сценария php и отправлю данные с URL-адресом в качестве параметров. Как мне убедиться, что только я могу это назвать? Я не хочу, чтобы люди прослушивали URL-адрес и вызывали его вне моего приложения.

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 июня 2010

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

option1: http://[your url запроса] & key = xyz, где xyz известен только вам

опция 2: первый сервер ping с паролем имени пользователя и при успешной проверке получить динамический токен [dKey], храните его локально.затем для дальнейших запросов.http://[your url запроса] & key = dKey.

опция 2 - это та, за которой обычно следуют.

1 голос
/ 18 июня 2010

Короткий ответ: вы не можете предотвратить прослушивание.

Но вы можете усложнить жизнь анализатора, внедрив некоторую внутреннюю аутентификацию, предварительно определенные параметры GET / POST (или динамические, но рассчитанные по алгоритму, который вам известенhow) обмен, скрытые поля заголовка и т. д.

Но все это также может быть перехвачено / выполнено в обратном порядке.

Возможным способом Overkill было бы использование некоторого вида асимметричного шифрования с закрытым / открытым ключом /подпись.Таких как RSA.Ваше приложение будет содержать только открытый ключ и подписывать с ним данные запроса.И на вашей стороне сервера будет секретный закрытый ключ, который он будет использовать для проверки правильности клиентских запросов.

0 голосов
/ 18 июня 2010

Я очень мало знаю об андроиде - но это не очень актуально для вопроса.

Если вы хотите запретить кому-либо прослушивать URL (и данные аутентификации?), Тогда единственный вариант - использовать SSL. С другой стороны, если вы просто хотите запретить другим людям доступ к URL, это просто вопрос аутентификации. Если вы не используете SSL, то это означает, что вам нужно использовать сеансы и проверку подлинности на основе вызовов, чтобы избежать перехвата трафика. Вы можете сделать это с помощью дайджест-аутентификации или свернуть свой собственный код.

С

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...