Защита HTTP-запроса от вызова другими пользователями
У меня есть приложение для Android, из которого я хочу загрузить некоторые данные в базу данных на моем веб-сервере. Поскольку библиотека MySQL java имеет размер около 5 Мб, я не хочу включать ее в приложение. Поэтому я сделаю HTTP-запрос для php-скрипта и отправлю данные с URL-адресом в качестве параметров. Как мне убедиться, что только я могу это назвать? Я не хочу, чтобы люди вынюхивали URL-адрес и вызывали его за пределами моего приложения.
Спасибо
3 answers
Используйте простой статический токен, чтобы идентифицировать клиента самостоятельно или заранее, сначала аутентифицируйтесь с помощью имени пользователя/пароля, сгенерируйте токен и используйте этот токен для дальнейших транзакций.Срок действия этого токена может истечь через некоторое время.
Вариант 1:http://[вашURL запроса]&ключ=xyz где xyz известен только вам
Вариант 2: первый сервер ping с паролем имени пользователя и после успешной проверки получите динамический токен [DKEY], сохраните его локально. затем для дальнейшего запросы. http://[вашURL запроса]&ключ=dkey.
Обычно используется вариант 2.
Короткий ответ: вы не можете предотвратить обнюхивание.
Но вы можете усложнить жизнь сниффера, реализовав некоторую внутреннюю аутентификацию, обмен предопределенными параметрами (или динамическими, но рассчитанными по алгоритму, который вы только знаете), скрытыми полями заголовка и т. Д.
Но все это также можно было бы обнюхать/перепроектировать.
Возможным излишним способом было бы использование какого-либо асимметричного шифрования/подписи с закрытым/открытым ключом. Такие, как RSA. Ваше приложение будет включите только открытый ключ и подпишите им данные запроса. И у вашего сервера будет секретный закрытый ключ, он будет использовать его для проверки правильности клиентских запросов.
Я очень мало знаю об Android, но это не имеет отношения к вопросу.
Если вы хотите запретить кому-либо прослушивать URL-адрес (и данные аутентификации?) тогда единственный вариант - использовать SSL. С другой стороны, если вы просто хотите запретить другим людям доступ к URL-адресу, это просто вопрос аутентификации. Если вы не используете SSL, это означает, что вам нужно использовать сеансы и аутентификацию на основе вызовов, чтобы люди не прослушивали трафик. Вы вы можете сделать это с помощью дайджест-аутентификации или свернуть свой собственный код.
C.