Я недавно написал сервер сокетов на PHP, который будет обрабатывать связь между приложением для телефона Android и моим веб-сервером PHP. Из-за того, что Android изначально не поддерживает push-уведомления, мы будем использовать наш веб-сервер в качестве промежуточного слоя для обработки наших «толчков».
Сервер сокетов стабилен, хорошо работает и, кажется, хорошо масштабируется. Хотя в конечном итоге я хотел бы переписать это на C, у меня нет навыков, необходимых для того, чтобы сделать это прямо сейчас, поэтому я собираюсь остаться в PHP на некоторое время. На данный момент наш эмулятор Android может обмениваться данными через сервер, получать сообщения и т. Д., Так что вся эта часть покрыта.
Меня беспокоит то, что сейчас любой может открыть сокет для моего сервера и получить клиентское соединение. Хотя мы не будем передавать конфиденциальные данные взад и вперед, я не хочу позволять кому-либо подключаться и получать широковещательную информацию, поглощать мои ресурсы и вообще забивать мой сервер.
Вопрос в том, как мне защитить такой сервер? Давайте предположим, что я работаю на порту 25000 - могу ли я установить какой-то уровень SSL на этом порту и ожидать, что устройства, такие как Android, смогут обмениваться данными через этот порт без каких-либо специальных протоколов или переходов через скачки?
Я рассмотрел вопрос о том, чтобы попросить подключающихся клиентов аутентифицировать своего пользователя в нашей пользовательской базе данных, прежде чем ему будет предоставлено клиентское соединение, но это потребовало бы передачи учетных данных в виде простого текста по сети, что я НЕ собираюсь делать.
Любые предложения по этому вопросу были бы очень полезны - я довольно новичок в прямой связи TCP из PHP и чувствую, что мне, возможно, просто не хватает чего-то простого, что позволяет проводить аутентификацию на этом уровне.
Дополнительная информация: Если мне удастся надежно получить действительное имя пользователя и пароль, я буду использовать MySQL для проверки пользователя, а затем принять / отклонить его соединение на основе результатов запроса.
Заранее спасибо ..