Проверить на PHP-сервере, что один запрос сделан от конкретного клиента

Я пишу мобильную игру, в которой пользователь отправляет свой рекорд на PHP-сервер.

Я хочу проверить на сервере, что HTTP-запрос поступает только с мобильных устройств. Я хочу отклонять вызовы, которые злоумышленник может отправить через curl или другие HTTP-клиенты с фальшивой оценкой.

Каков стандартный, обычный способ сделать это?

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

Спасибо.


person GaRRaPeTa    schedule 19.07.2013    source источник
comment
звучит труднодостижимо. Нет никакой разницы между вашей игрой и curl на сервере.   -  person lud    schedule 19.07.2013
comment
Нет надежного способа сделать это. Все, что находится на стороне клиента, может быть подделано.   -  person    schedule 19.07.2013


Ответы (2)


Взгляните на это:

https://github.com/serbanghita/Mobile-Detect

Это довольно точно, однако это не остановит клиентов, которые подделывают свой User-Agent.

Однако, как правило, лучший способ — не позволять клиенту принимать какие-либо решения.

Возьмем, к примеру, такую ​​игру, как Eve Online. Каждое действие, которое вы совершаете, отправляется на сервер как действие пользователя, затем сервер проверяет действие и принимает соответствующее решение. Если бы сервер полагался на клиента, чтобы решить, какой ущерб наносит корабль, игра подверглась бы бесконечным взломам тренера.

person Flosculus    schedule 19.07.2013

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

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

Быстрый поиск указал на эти сценарии обнаружения мобильных устройств.

Но опять же ... вы не можете полагаться ни на что подобное, но если это не слишком много времени, то обязательно добавьте еще одну проверку в скрипт, если вам от этого станет легче :)

person Jonast92    schedule 19.07.2013