まず、100% 確実な解決策はないことを私は知っています。この質問は何度も聞かれています。
これらの投稿は私のお気に入りの 1 番目と2 番目ですが、古すぎて効果的な解決策がありません。
JavaScript、HTML5、および CSS3 でソーシャル ゲームを作成しており、canvas を使用しています。セキュリティ上の理由から、ユーザーがデバッガ ツールを使用しているかどうかを検出する方法を知りたいと思っていました。ユーザーが何らかの値、速度などを変更しようとしているかどうかを防ぐために..しかし、これらのほとんどはPHPで処理できます。
私のゲームはリアルタイムゲームです。
これはいくつかの反チートのアイデアの非網羅的なリストです:
- サーバー側でポイントを獲得するたびに値をチェックして、一貫性があるかどうかを確認します。
- 各値を暗号化し、サーバー側で復号化します。
- 値ごとに異なるハッシュを持ち、ユーザーがゲームをロードするたびにランダムにします。
- スクリプト ファイル全体を縮小してエンコードします。
- ユーザーがデバッガーを使用しているかどうかを検出し、ゲーム中にウィンドウのサイズを変更しているかどうかを確認します (ただし、ゲームをロードする前にデバッガーを開くことができます..)。
- ゲームの完全なリプレイを送信するページを作成し、矛盾がないかチェックします。
- サーバーへのリクエストごとにスクリプトを送信し、ユーザーが変更した場合に備えて元のスクリプトと比較します。
- 縮小したスクリプトを HTML ページ内に配置し、リクエストごとに元のスクリプトを送り返して実際のスクリプトを置き換えます。
- クライアント側にタイマーを置き、値が一貫しているかどうかを確認するために必要なときにサーバー側に時間を送信します(これを行うには、スコアが設定した最小時間と一致するかどうかを計算できます。たとえば、時間は47秒です。スコアは 1000 で、40 秒と 50 秒の間のゲームではスコアが 1500 を超えることはできないため、この場合はすべて問題ありません)。
もちろん、リストするソリューションは他にもたくさんあります。
ソリューションごとに、デバッガー ツールにアクセスできます。デバッガー ツールの使用を完全に防止する適切な方法はありません。したがって、ユーザーがチートしないように 100% 防止する方法はありません。
少なくとも、これらすべてのソリューションをグループ化することで、ほぼチート対策を行うことができます。完全に機能するシステムがなくても、チートを行うユーザーはごく一部であり、ゲームでチートを行う方法についてのチュートリアルが確実に見つかるので、それぞれのユーザーが解決策を見つけることができます。それが起こる時。