Аутентификация и безопасность входа в игру - PullRequest
4 голосов
/ 26 марта 2010

Прежде всего скажу, что я совершенно новичок в безопасности в кодировании. В настоящее время я помогаю другу разработать небольшую игру (на Python), которая будет иметь сервер входа в систему. У меня мало знаний о безопасности, но я знаю, что во многих играх есть проблемы с этим. Все, от сторонних приложений (ботов) до манипулирования пакетами WPE. Учитывая, насколько маленькой будет эта игра и ограниченную пользовательскую базу, я сомневаюсь, что у нас будут серьезные проблемы, но мы хотели бы сделать все возможное, чтобы ограничить проблемы. Я не уверен, с чего начать, какие методы мне следует использовать, или чего это стоит. Например, отправка данных на сервер, таких как имя пользователя и пароль.

Мне сказали, что его информация должна быть зашифрована при отправке, так что в случае, если кто-то просматривал ее (какими бы то ни было средствами), чтобы он не мог войти в учетную запись. Однако, если кто-то может перехватить зашифрованную строку, не будет ли эта строка работать всегда, поскольку она расшифрована на стороне сервера? Другими словами, кто-то может просто перехватить пакет, повторно использовать его и все же получить доступ к учетной записи?

Основная цель, которую я действительно ищу, состоит в том, чтобы убедиться, что игроки входят в игру с клиентом, которого мы предоставляем, и чтобы он был «безопасным» (широким, я знаю). Я посмотрел вокруг на различные методы, такие как шифрование с открытым и закрытым ключом, которое, я уверен, любой шестнадцатеричный редактор в конечном итоге может найти. Есть много других методов, которые кажутся мне сейчас над головой и оставляют впечатление излишнего убийства.

Я понимаю, что ничто не на 100% безопасно. Я просто ищу любые материалы для ввода или чтения (ссылки) для достижения главной цели, указанной выше. Буду признателен за любую помощь, спасибо.

Ответы [ 4 ]

1 голос
/ 26 марта 2010

Что касается того, как защитить клиента ... Самое реалистичное - сказать, что вы этого не делаете. Когда вы пишете код сервера, никогда не доверяйте никаким данным, которые отправляет вам клиент. Никогда не сообщайте клиенту информацию, которую вы не хотите, чтобы игрок имел.

В некоторых играх, таких как шахматы (или, по сути, все пошаговые), это работает довольно хорошо, потому что серверу очень легко проверить, что ход, переданный клиентом, является законным ходом.

В других играх эти ограничения не очень практичны, и тогда я не знаю, что бы вы сделали, с точки зрения кода. В этот момент я бы попытался перенести проблему на социальную: могут ли другие игроки, которым вы доверяете, принести свои кости на свой игровой стол? Если нет, можете ли вы играть с кем-то еще?

1 голос
/ 26 марта 2010

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

1 голос
/ 26 марта 2010

Это сложная проблема, потому что код работает на клиенте. Проблема воспроизведения может быть решена с помощью задачи, позволяющей серверу отправлять случайный токен, который клиент добавляет в строку для шифрования. Таким образом, строка пароля будет отличаться каждый раз, и воспроизведение зашифрованной строки не будет работать (поскольку сервер проверяет, есть ли у зашифрованного пароля последний отправленный токен)

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

0 голосов
/ 26 марта 2010

Несмотря на то, что это может быть излишним для этого конкретного приложения (небольшая игра, ограниченная база пользователей), вам следует серьезно подумать об использовании oAuth , так как это приложение дает вам отличный шанс изучить эту технологию (которая является действительно надежный и широко распространенный, и распространяющийся все больше и больше! -) чтобы применить его в будущем - он был разработан и реализован отличными программистами с сильным уровнем безопасности. Вы можете изучить их учебное пособие, чтобы получить хорошее представление и опыт, а затем использовать библиотеки, такие как python-oauth2 , для простой и продуктивной реализации oauth в своем настольном приложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...