#php #.net #security
#php #.net #Безопасность
Вопрос:
Я создаю простую игру с Java / .net в качестве клиента и использую веб-сервер php.
Теперь, когда кто-то заканчивает уровень, выходит или начинает новую игру, клиент отправляет информацию на страницу php, которая хранит их в базе данных mysql.
Теперь я бы не хотел, чтобы пользователи обманывали. Для использования игрового клиента вам нужны имя пользователя и пароль.
Клиент отправляет количество раз, когда они играли в игру, какой игрок победил, сколько заработанных очков. Поэтому, если я отправлю четкую информацию, кто-нибудь с анализатором сможет увидеть, какую страницу php я вызываю, и скопировать информацию, отправленную на веб-сервер.
Итак, какая лучшая система безопасности / проверки в этом случае?
Я думал об использовании любой криптосистемы, которую я использую на Java vb.net c # и php (например, des, md5), но я хотел бы знать, является ли это лучшим решением или нет.
Обновление Клиенты не используют веб-браузер для связи с веб-сервером. Например, это приложение WinForm, которое вызывает страницы php для получения информации и обновления данных в базе данных Mysql Большое спасибо
Ответ №1:
Некоторые вещи, которые вы должны знать, прежде чем продолжить:
-
Все, что есть в клиентском браузере, может быть проверено. Сюда входят все вызовы, которые вы делаете обратно на свой сервер базы данных. Шифрование для этого не имеет значения, потому что, очевидно, ваш код javascript будет частью шифрования / дешифрования данных. Javascript можно легко просмотреть, чтобы получить ключи.
-
Даже Flash и т.д. могут быть декомпилированы теми, кто готов потратить несколько минут на их разработку.
-
Не ждите, пока они завершат все свои игры, чтобы отправить информацию в вашу базу данных. Делайте это по мере выполнения действий.
-
Вы можете только немного усложнить, но не сделать невозможным, обман при использовании javascript в качестве игрового движка в вашем браузере. Под «немного сложно» я подразумеваю, что кому-то, даже с наполовину приличными навыками программирования, может потребоваться час, чтобы победить … скорее всего, намного меньше.
-
Что касается снифферов. Не имеет значения, включен ли на вашем сайте SSL или нет. Это защищает информацию только после того, как она покидает компьютер. Он ничего не собирается делать с анализатором, расположенным на клиентском компьютере.
Подводя итог: ваша единственная реальная защита здесь — сделать обман чем-то, на что не стоит тратить время.
Комментарии:
1. Нет, подождите, я не использую браузер в качестве клиента, а программу, разработанную на Java, C # vb.net и я вызываю только веб-сервер php.
Ответ №2:
Лучшим вариантом было бы, если бы приложение использовало веб-сервис, а клиентское приложение шифровало сообщение перед отправкой, но если вы не добавите какие-либо дополнительные соленые данные (например, временную метку, чтобы попытаться смягчить любые повторные атаки), вы все равно будете открыты для людей, которые могут «легко» обмануть.
В .Net есть несколько хороших вариантов обслуживания WCF, и хотя я никогда не использовал WCF с конечной точкой php, идея WCF заключается в обеспечении межтехнологической связи, лучше всего было бы провести некоторые исследования в этой области.
Также следует отметить, что MD5 не является методом шифрования, это алгоритм хэширования, означающий, что после хэширования данных они не могут быть восстановлены.