私は JApplet ゲームを作成しており、ユーザー情報を APPDATA の .txt ファイルに保存しています。彼らの情報を保存するためのより安全な方法はありますか?
1 に答える
基本的に、不正行為を防ぐ唯一の方法は、管理下にあるサーバーにスコアを計算させるか、ゲームルールを適用することです。ピアツーピアゲームを作成している場合、他のプレーヤーがあなたを関与させずに不正行為を行っているかどうかをユーザーが判断できるようにするプロトコルがある可能性があります。 ACM sigecomは、このようなプロトコルに関する調査を定期的に公開しています。ただし、アプレットのセキュリティモデルの制限により、ユーザーは、アプレットが他のユーザーと直接通信するための特別な許可をアプレットに付与する必要があります。
そういえば、「ユーザーの情報を.txtファイルに保存する」ことはお勧めしません。 %APPDATA%
Windowsのみであるため、「write oncerunwhere」を破ります。また、デフォルトのアプレットサンドボックスではローカルファイルの読み取りまたは書き込みが許可されていないため、アプレットに署名して、そのような昇格された特権に値するほど特別であるとユーザーに納得させる必要があります。
ただし、アプレット/サーバー通信にはいくつかのオプションがあります。
- を使用したREST呼び出し
java.net.URL
- SOAP呼び出し(これにはいくつかのライブラリがあります)
- RMI(サーバーがJavaで記述されている場合のみ)
- TCPを介した独自のカスタムプロトコル
アプレットはCookieを直接読み書きできませんが、JavaScriptは可能であり、JavaScriptはアプレットのメソッドを呼び出すことができます。サーバーからアプレットに情報を渡す(ただし、バックアウトしない)最後の方法は、PARAMタグを使用することです。サーバーの秘密鍵とPARAMタグにエンコードされたbase64で署名された初期のゲーム状態データを渡すこともできます。ゲームの状態に関する何かがプレーヤーから隠されているはずであるが、アプレットコード内で知られている場合、不正行為を完全に防ぐ方法は考えられませんが、これは誰もがそれを「編集」することを防ぎます。