-1

問題は簡単です。小さな HTML5 ゲームを作ったのですが、何人かの友人がそれにとても興奮していたので、殿堂入りをしたいと思っていました。アイデアは、次のような単純な csv になります。

Name,Points,Date
AAA,15,2012-08-25

等。; どうすればいいですか?私の考えは、ajaxリクエストを使用してphpファイルに送信し、次に解析してcsvに書き込むことでしたが、気づかれずにphpファイルにデータを送信する方法を実際には想像できません(人々が偽のスコアを入力できるようにする) )。

また、これは非常にシンプルでなければならないため、node.js などはありません。

4

2 に答える 2

2

サーバー側の検証がなければ、偽造される可能性があるため、簡単な方法はありません。これが、目にするほとんどの Flash ゲームのハイスコアがばかげている理由です。

使用できる方法の 1 つは、時間ベースの暗号化です。これは誰にでもできるというわけではありませんが、手動で偽造するのは本当に面倒で手間がかかります。

たとえば、MS の現在のタイムスタンプをキーとしてスコアを暗号化し、ハッシュと時刻をサーバーに送信できます。サーバー側では、時間をキーとして使用してハッシュを復号化できます。時間が現在のサーバー時間から離れすぎている場合 (スコアの送信に時間がかかることを考慮して)、スコアを破棄します。

リクエストの例は次のとおりです。

page.php?t={timestamp}&name={name}&h={encryptedscore}

はMStでの時間、nameはユーザーの名前、hは時間とスコアのハッシュです。

これは完全に安全というわけではありませんが、スクリプトをライブ編集して偽造することができない人にとっては、非常に困難です。

于 2012-08-24T23:29:47.820 に答える
0

それがまっすぐな AJAX 呼び出しである場合、誰かが Fiddler を開いてこれに行く http 投稿を変更することを妨げるものは何もありません。クライアントから受け取った入力を検証するだけです。数値が数値であり、日付が有効な日付であることを確認してください。

あなたもSQLを使用していますか?SQL インジェクションは、人々がクライアントから入力を受け取り、それを直接 SQL クエリに連結する場所です。

于 2012-08-24T23:19:13.940 に答える