2016-12-21 46 views
1

私はAndroid用の非常にシンプルなゲームを開発しています。安全かつ短期のサーバークライアント接続

ゲームはUnityで行われるので、C#で書かれます。私はPythonでサーバソフトウェアを書くことを望んでいました。なぜなら、私は言語に精通していて、ラズベリーパイを実行したいと思っていたからです(主に概念証明のため)。

サーバは、1つのデータベース内の1つのテーブルについて心配する必要があります。これはMYSQLの "High Score"テーブルを保持します。

これは背景ですが、今私の質問に。アプリからサーバーにデータを取得する安全で簡単な方法とは何ですか?その逆もあります。私はXML based RPCを見ていましたが、もっと簡単な方法があれば見たいと思っていました。アプリは、評価のためにスコア、イニシャル、ハッシュを渡すだけです。サーバーは、テーブルを返すだけで済みます。

私は何か重要なものを格納していないので、偽のセキュリティを守る必要はありませんが、誤ったエントリを防止したいので、データを検証するためにハッシュを持っています。

答えて

1

これは非常に幅広い一般的な質問ですが、ここではどのように考えていますか。過去にUnity3dの仕事をやって、私は試してみます。

まず、MySQLを使用せず、むしろPostgreSQLを使用するか、CouchbaseのようなSQLデータベースを使用しないでください。 Couchbaseやその他のno-sqlデータベースは、従来のRdbmsと比較してスケーラビリティと柔軟性の高いスキーマを備えているため、ゲーム開発者に人気があります。この部分はもちろん私の意見です。

基本的な偽造を防止するためにハッシュ(SHAを推奨)を使用することは、セキュリティを最小限に抑えるための良いアプローチです。可能であれば、秘密の言葉をハッシュに追加し、秘密を隠しておきます。秘密はまた、ハッシュコードを複製できるように、サーバによって知られている必要があります。

サーバー側では、Pythonを使用することは常に良いアイデアです。私はFlaskや他のいくつかの最小限のWebフレームワークを使い、Unity3dクライアントからのHTTPリクエストでヒットできるRESTfulなAPIを構築し始めます。

クライアント間で送受信されるデータはJSON(XMLよりもコンパクトです)であり、Unity3dにはいくつかのJSONライブラリがあります。一般的なC#ライブラリ彼らがReflectionに依存している場合はUnityで失敗する可能性があり、ターゲットプラットフォームにも依存します。

+0

ありがとう、私はSHA1またはMD5を考えていました。あなたがMYSQLとMSSQLを知っていれば、PostgreSQLは簡単に取り出せますか?私はこれらの2つ以外は一度も使用していませんが、ユースケースがあるかどうかを知るためにはダウンしています。広範な質問に申し訳ありませんが、私は他の人がこの状況に多くの制約を課さずにこのような状況に対処する方法を見たいと思っていました。 –

+0

あなたのようなアプリでは、MySQLまたはPostgreSQLの方が十分です。 Postgresはちょうど私のfaveです。どちらもオープンソースのリレーショナルデータベースです。私がSHA-2以降を使って読んだことはSHA1よりも安全ですが、私は暗号の専門家ではありません! –

+0

SHA2はより長いハッシュを与えるので確実により安全です。私はおそらくそれに行くでしょう。 (私はSHA1をファイルの保存を保存するために使用していたので、私はそれを言ったのです)。ハッシュは絶えず変化しているので、解読された時点で無駄になります。私はハッシュキャットでテストするかもしれません。提案していただきありがとうございます! –

1

Flaskフレームワークを使用して構築されたREST APIは、実装が簡単で簡単です。

セキュリティを強化するために、HTTPSを展開する際に使用できます。ゲームコードに含めるSSL証明書を作成し、アプリケーションサーバーに接続を確立するためにクライアント証明書を要求させることができます。これにより、認証されていないクライアントがサーバーに接続することさえできなくなります。

+0

SSLの購入/生成は悪い考えではありませんが、保護が必要なデータは送信されません。これはインラインでの変更を防ぎますが、Android上で実行されるため価値がありません。 –

+0

@ alex-g-riceのような共有秘密のハッシュは、実装がはるかに簡単であることを示唆しています。私もmd5から離れています。今は壊れていると考えられています。 SHA-2ははるかに安全です。 – edrw

+0

それは元のアイデアでした。私はMD5とSHA1がどのように壊れているのかを知っています。私は今までSHA2やより強力な暗号を使用していると言いましたが、おそらく最も良いです。 –

関連する問題