1

Minecraftはランチャーを使用してゲームの盗難を減らします。誰でも無料でダウンロードできますが、ゲームを更新するには、ユーザーがプレミアムアカウントの資格情報を提供する必要があります。プロジェクト用に(Rubyで)同様のランチャーを構築したいのですが、パスワードをHTTPサーバー(重要な場合はSinatraで作成)に安全に送信する方法がわかりません。明らかに、URLのパラメータとしてそれを置くことは本当に悪い考えです。

また、どういうわけかパスワードフィールドを使用して送信することについては考えましたが、それらがどのように機能するかはわかりません(通常、HTTP関連の作業は行いません)。これはまだ可能性です。

簡単な要約:Rubyで、HTTPリクエストを介して機密情報をRuby/Sinatraサーバーに送信したいと思います。

これを読んでくれてありがとう!

4

2 に答える 2

2

パスワードフィールドを使用することは役に立ちません。POSTを介して送信された場合でもありません。それらを隠そうとしても、プレーンテキストで送信されます。これがhttpの本質です。

代わりに、必ずTLSoverhttpsを使用する必要があります。stdlibはそのためのNet::HTTPを提供しますが、httpsをサポートする任意のhttpクライアントを使用できます。

このスキームに関係するお金/価値がある場合は、それ以下のことで妥協しないでください!独自のプロトコルを発明することは

  • はるかに多くの作業(TLSの設定は必ずしも簡単ではありませんが、それでも作業ははるかに少なくなります)
  • 99,9%のケースで安全ではない
  • 残りのケースでは完全に壊れています

いいえ、正直なところ、安全なプロトコルを発明することは、おそらくそこにある最も難しい仕事の1つです。だから、怠惰になって主流(https)に固執してください、それは最終的に報われるでしょう。

編集:

あなたは、証明書が必要なためにTLSにお金がかかるかどうかを尋ねました。これはサーバー側の問題にすぎません。一方向認証済みTLSでは、サーバーのみが証明書を提示する必要があるため、そのサーバーに接続するクライアントはそのような証明書を購入する必要はありません。ただし、サーバーを運用する場合も、そのような証明書が必要になります。あなたがお金を使いたくないのなら、あなたはあなたに無料でhttpsを与えるホスティングを調べるかもしれません。Herokuは、私が知っているような無料のサービスを提供しています。他のプロバイダーもあると思います。

于 2012-06-25T14:21:22.833 に答える
-1

@Lenが言ったように、HTTPSを使用するか、それがオプションでない場合は、パスワードだけを次のように暗号化します。

  • 少なくとも、XOR暗号化
  • 多分DES
  • またはRSA(RSAは銀行および軍用グレードであるため、ゲームが暗号化を破ろうとするパワーハッカーの注意を引く価値がない限り、完全にやり過ぎです)

次に、ランチャーで公開RSAキーを配布し、サーバーでプライベートキーを配布し、それらを使用してパスワードを暗号化します(または、これらを使用して対称暗号化キーを暗号化します)。

于 2012-06-25T13:58:50.180 に答える