-3

さて、私はゲームの戦闘武器のチート対策を設計しています。私がやりたいのは、データベースでプログラムを「ping」して、アンチチートを使用しているかのように見せるプログラムを人々が簡単に作成できないようにすることです。

他の人が接続を簡単にシミュレートするのを「暗号化」または停止する方法はありますか? 私はPHPが苦手で、これまでのところ追加方法は次のとおりです。

public function Update()
    {
        $ign = $_GET['ign'];
        $timestamp = $_GET['uid'];
        $time = time();

        if(($time - 10 < $timestamp) && ($time + 10 > $timestamp))
        {
            $this->connection();
            $data = mysql_query("SELECT * FROM users WHERE ign = '{$ign}'");
            if(mysql_num_rows($data) > 0)
            {
                mysql_query("UPDATE users SET lastonline = '{$time}' WHERE ign = '{$ign}'");
            }
            else
            {
                mysql_query("INSERT INTO users (id, ign, lastonline) VALUES ( NULL, '{$ign}', '{$time}' ) ");
            }

            echo "Connected to database";
        }
        else
        {
            echo "Problem connecting";
        }
    }

それを保護する/すぐにクラックしにくくする何らかの方法が必要です。そして、クラックされたら簡単に変更できます。これで十分な情報が得られたことを願っています!

4

1 に答える 1

1

まず、ここでは SQL 入力をサニタイズすることがほぼ必須です。PDO で準備を使用することをお勧めします ( ext/mysqlis going on a travel far, far away )。

$db = new PDO(<connection details>);
$prepare = $db->prepare("SELECT * FROM users WHERE ign = :ign");
// Tip: make sure you actually check the prepare worked before trying to execute.
$prepare->execute(array(":ign" => $ign));

等々。リファレンスマニュアルを読んでください。

ただし、mysql_* を使用していて変更を拒否する場合 (ただし、PHP がリリースされたときに 5.5 に更新するとE_DEPRECATEDスローされます)、mysql_real_escape_stringクエリで引用符を使用して削除します。


次に、実際にリクエストを処理します。

これを行うにはいくつかの方法がありますが、最も安全な (そして唯一の選択肢) は、One Time Pad や OAuth などの暗号的に強力なものです。

資格情報を生成し、おそらく製品コードから一意に生成されたハッシュで署名されたトークンをゲームに送信させます。これはすべてのインストールで一意である必要があり、スクリプトで検証できるハッシュを生成する必要があります。

これは、ゲーム会社によって常に研究されている問題ですが、多くの場合無駄です。あなたのゲームは、時間をかける価値があると感じた人なら誰でもリバース エンジニアリングできますし、そうするでしょう。アンチチートも同様です。


それにもかかわらず、要求に署名し、以下を含めます。

  • プレイヤーのゲーム内の名前
  • 何らかの方法で検証できる非常に正確なタイムスタンプ。
  • 署名を要求する (暗号で保護)
  • 位置データ (スピードハッカーを禁止するのに役立ちますが、誰かがテレポートした場合などの誤検知には注意してください)
  • アンチチートに必要なその他のもの (おそらくこれに関する仕様があるでしょう)

また、ゲームを愛するために、Punkbuster スタイルのチート対策を行わないでください (別名、ボットネット スタイルの方法でリクエストを禁止しないでください。悪用される可能性があります )

最後に、プロのセキュリティ研究者にすべてを確認してもらうことをお勧めします。

于 2013-05-20T14:00:19.337 に答える