FTPサーバーにハイスコア情報を保存するゲームを書きました。ソースコードで、アカウント名とパスワードを含むftpリンクを書き出す必要があります。
例えば:
url = new URL("ftp://name:[email protected]/");
これはJavaです。クラスファイルでは、文字列はソースコードで記述されているとおりに保持されます。したがって、誰かがクラスファイルを読み取れた場合、この文字列 ftp:// name:[email protected]/ を見つけることができます。とにかくわずかにクラスファイルに入ります。
ユーザー名とパスワードを保護する適切な方法は何ですか?
編集:
Javaで暗号化クラスを作成し、名前とパスワードを暗号化されたユーザー名とパスワードで暗号化器への呼び出しに置き換えました。例えば:
url = new URL("ftp://Crypter.crypt("q345uih34",3)+:+Crypter.crypt("nfk3iugr29o8",-2)[email protected]/");
これで十分でしょうか?難読化が最善の解決策であるかどうかはわかりませんでした。
このシナリオにはいくつかの攻撃経路があるため、パスワードを非表示にしても役に立たない:
したがって、ftpパスワードをどこでどのように非表示にするかは重要ではありません。
唯一の良い解決策は、ハイスコア計算自体を行うサーバーを用意することです(この方法でもボットの問題があります)。少なくとも暗号化をサポートするプロトコル(https、sftp、ftps)を使用する必要があります。資格を知っている誰かが他のユーザーのハイスコアデータを破壊できないことを確認する必要があります。これは、ftps/sftp-serverでの新しいファイルの作成のみを許可する厳密なアクセス許可によって、またはデータを受け入れてそれ自体を保存するWebアプリケーションを使用することによって実行できます。
FTPはおそらくこれについて間違った方法です。これはクリアテキストプロトコルなので、プログラムでどれだけ難読化しても、スニファを持っている人はだれでも認証要求を傍受して資格情報を抽出できます。
キー/値のペアを$ postリクエストとしてサーバーに送信して、操作されないようにするための認証を行うことができないのはなぜですか?