Защита HTTP-запроса от вызова другими пользователями


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

Спасибо

Author: Kaloer, 2010-06-18

3 answers

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

Вариант 1:http://[вашURL запроса]&ключ=xyz где xyz известен только вам

Вариант 2: первый сервер ping с паролем имени пользователя и после успешной проверки получите динамический токен [DKEY], сохраните его локально. затем для дальнейшего запросы. http://[вашURL запроса]&ключ=dkey.

Обычно используется вариант 2.

 2
Author: Wind Chimez, 2010-06-18 10:58:15

Короткий ответ: вы не можете предотвратить обнюхивание.

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

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

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

 1
Author: zed_0xff, 2010-06-18 10:47:12

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

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

C.

 0
Author: symcbean, 2010-06-18 11:54:47