私は困惑しています。 これはUnity3Dの私のゲームです。Unity3DからPHPへのセキュリティ問題
これは、人々が通常どんなプレイをするかという点で意味をなすようにします。 アカウントに500ゴールド(データベースに保存されています)がプレーヤにあるとします。 そして、プレイヤーは何らかの仕事をして243ゴールドを得ます。 (Unity3D)は、彼らが243ゴールドを得たPHPファイルをどうやって伝えることができましたか?
ここに問題点があるので、 Unity3DにはWWWというクラスがあります。 PHPファイルに何らかの文字列を送ることができます。あなたが見ることができるように
int currentGold;
string goldToSend = currentGold.ToString(); // Only using that for example.
WWWForm form = new WWWForm();
form.AddField("NameOfPostRequestInPHPFile",goldToSend);
WWW www = new WWW("website.com/PHPFile.php", form);
は今、私は1つが、実際に、その後にPHPにクライアント側からのランダムな金の額を送信する方法を、あなたは何をクライアントに信頼することはできませんという、かなり大きなジレンマに陥っていますデータベースに入れる。
私が直面している問題は、クライアントが実際にそのことを話すことなく、PHPが実際に何をしているのかを理解できるようにするにはどうしたらいいのでしょうか?ロードするPHP、このデータを使用してデータベースに格納します。
私はハッシュを使用することを考えましたが、それでもクライアント側で問題が発生します。その後、ハッシュはちょうど彼らのよこしまな試みを合うようにローカルで変更される可能性があるため文は明らかに、いずれかの動作しない場合
を使用して、あなたが見ることができるように
if(sentGold == 243){
string hash = hash01;
// Change it to hash1000 (to get 1000 gold).
}
if(sentGold == 1000){
string hash = hash1000;
}
としましょう。加えて、20Kのif文を持つことはごみのように見えます。
ハッキングを完全に停止することは不可能です。しかし同時に、もし私が何かをしたら、私はそれを正しくやりたいと思っています。私が何を意味するのか分かっていないのですか?
この点で私のヘルプメッセージを読んだことがあれば。 私はあなたがそれを読むことに入れた時間を本当に感謝します。 それは私に多くを意味します。
これで私の手助けとなるかもしれない他の技術やヒントがあれば、それについてのチュートリアルもありますが(私は数日間探していますが)、誰も対処していないのでまだデッドロックしています彼らが秘密鍵などを使うかもしれないという事実だが、彼らが送った文字列が簡単に改ざんされることに対処していない。彼らがしなければならないことは、243〜9999999999のために変更され、その後、彼らは豊かです。
あなたが話している方法ではできません。渡される情報の正当性を検証するサーバーはありません。クライアントが渡す情報を確認する必要があります。ゴールドがスポーンポイントである場合、スポーンポイントがデータベースに存在するかどうか、およびスポーンポイントにどのアイテムと数量が存在するかをチェックするなどです。 – spencdev