-1

i スコアをデータベースに更新する php ファイルを作成しました。例:http://domain.com/heli/test.php?id=100001181378824&score=50000

Test.php には以下のコードが含まれています

mysql_connect(localhost,$user,$password);
$id = mysql_real_escape_string($_GET['id']);
$score = mysql_real_escape_string$_GET['score']);
@mysql_select_db($database) or die( "Unable to select database");
$query = "UPDATE heli SET score = '$score' WHERE app = '$id'";
echo $query;
$result=mysql_query($query);
mysql_close();

安全な方法で Javascript を使用して、私の test.php にリクエストを取得または投稿する方法を知りたいです。今、Js の下に作成しました。

 var httpwp = new XMLHttpRequest();
 var urlwp = "http://domain.com/heli/test.php?id=100001181378824&score=50000";
 var paramswp = "id="+ids+"&score="+scores+";
 httpwp.open("GET", urlwp, true);
 httpwp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 httpwp.setRequestHeader("Content-length", paramswp.length);
 httpwp.setRequestHeader("Connection", "keep-alive");
 httpwp.send(paramswp); 

しかし、認証キーなどを使用して安全に Post または Get Request を行う方法は?

4

2 に答える 2

1

1.まず、PHP コードを修正して、SQL インジェクションに対して脆弱にならないようにします。

2.次に、http ではなく https 経由でサーバーにアクセスします。

3.一意のセッション キーを返す名前とパスワードのログイン要求を受け入れる php ファイルを追加します。(大きな乱数、またはランダム データの sha1 ハッシュ + 要求内の一部のデータで十分である可能性があります)

4.この番号を発行日とともにサーバー側のデータベースに保存します。

6.スコアをアップロードする前に、アプリがこのファイルからセッション キーを取得するようにします。

7. スコアを保存する php ファイルにセッション キーとスコア データを受け入れさせ、それをデータベースと比較して有効であり、古すぎないかどうかを確認します (発行日を確認してください)。

8. 新しいセッション キーを保存し、スコア更新の結果と共にそれを返し、データベースから古いセッション キーを削除します。

9.サーバーから新しいキーを取得するたびに、jsが後の投稿で新しいキーを使用するようにします。

10.php アプリにサニティ チェックを組み込み、ばかげた不可能なスコアをチェックします。また、あまりにも早く達成された大きなスコアも確認してください。

于 2013-02-22T12:13:31.477 に答える
1

クライアントが送信するデータについては、決して確信が持てません。

これをより「安全」にするには、スコアの計算方法について、サーバーにいくつかのロジックを記述する必要があります。

例えば。今ゲームを開始し、3 秒後に 1000 ポイントを送信したとします。それは可能ですか?

いくつかのステップまたは制限を作成する必要があります。たとえば、プレーヤーがレベル 1 の場合、スコアは 100 ポイントを超えることはできず、1 分間のゲームプレイより前に送信することはできません。等々!

幸運を。

于 2013-02-22T11:55:46.717 に答える