обеспечение подключения к серверу php

У меня есть следующий сценарий: клиенты Android общаются с сервером PHP через HTTP Post. PHP-сервер обменивается данными с базой данных mySQL и отправляет результат в виде JSON для клиента Android.

Теперь я обеспокоен тем, что люди обнюхивают трафик, выясняют URL и публикуют много графов в моей базе данных. Я не беспокоюсь о том, чтобы обнюхивать полезную нагрузку. Поэтому он не обязательно должен быть зашифрован.

Я думал о TLS / SSL, который возникает из-за HTTP-соединения. Но я не уверен, какой предпочтительный способ пойти в этом сценарии.

Related of "обеспечение подключения к серверу php"

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

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

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

Шаг за шагом для этого – гораздо более длинный ответ, чем это можно сделать здесь. Я бы предложил сделать это поэтапно, так как в Интернете есть ресурсы о том, как работать с самоподписанным сертификатом SSL на Android, как на стороне сервера, так и на стороне клиента. В моей книге « Безопасность приложений для платформы Android» , опубликованной O'Reilly, также есть полная версия.

SSL не поможет вам, так как трафик можно обнюхать до того, как данные попадут на провод, и люди будут иметь возможность вычислять ваши вызовы API и заполнять БД дерьмом.

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