2012-02-07 17 views
1

私はAjaxを使用してJSONデータをサーバーに送信し、PHPスクリプトを解析します。サーバーへのJSONリクエストの保護/認証

は、例えばこれが出力されますJSONです: http://myserver.com/parse.php?user=123&point=100&callback ......

やURLでのポイントを取得し、そのユーザーにそれを与えるだろう「parse.php」スクリプトましたユーザーIDはユーザー= 123に格納されます。

ただし、ブラウザで「javadoc」を起動せずに「http://myserver.com/parse.php?user=123 & point = 100 & callback ......」と直接使用した場合彼らは彼らのポイントを騙すことができ、彼らは彼らがURLで好きな量に設定することができます。

どうすればJSONリクエストを保護/認証できますか?

+0

POST(これはPOSTを偽装することは可能ですが)でも可能ですが、何らかの理由でポイントを暗号化することもできます。もう1つのアイデアは、要求が同じサーバーから来たものかどうかを確認することです(言い換えれば、直接アクセスを禁止する)。たとえば、varが 'DEFINED'であるかどうかをチェックします(これは最善のアプローチではなく、単純ではなく単純です)。 – jackJoe

+0

データの暗号化、良いアイデア。私はそれを行います。 – sm21guy

答えて

1

あなたはその後、AJAX要求か何か同様のクライアント側を介してユーザのポイントを渡している場合不正行為からあなたのアプリケーションを保護することはできません。あなたのユーザーは100ポイントを獲得したスクリプトを教えていますが、それが公正な数字であることをどのように確認できますか?あなたのスコアを計算するために使用している最初のデータを渡します。質問の有効な回答や測定しているものなどです。

GET/POSTで実際にユーザー識別子を渡すことなく、アプリケーションにログインメカニズムがある場合は、スクリプトを実行するときにサーバー側で有効な資格情報を確認できます。

最後に、あなたのメソッドでは、AJAXヘッダーとリファラー($_SERVER['HTTP_X_REQUESTED_WITH']$_SERVER['HTTP_REFERER'])をチェックして、リクエストがあなたのJSコードから来ていることを確認できますが、これは本当にマイナーな調整です。また、すべてのブラウザがリファラーヘッダーを通過するわけではありません(プライバシー設定による)ので、さらに問題が発生する可能性があります。

+0

提案に感謝します! – sm21guy

-1

クライアント側にゲームデータとロジックを入れないでください。 クライアントを信頼しないでください。常にサーバー側を計算する必要があります。

もっとに関する情報(リンクタイトルに依存しない、答えにおけるロットに関する情報があります):https://gamedev.stackexchange.com/questions/3695/how-do-you-prevent-your-javascript-html5-web-game-from-being-copied-or-altered

+0

彼のロジックはサーバー側です。彼はただクライアントデータをサーバーに送信しています。問題はセキュリティに関するものです。 – Zakaria

+0

ハム...クライアントからサーバーにデータを送信し、そのデータに依存することは、「クライアント側にゲームデータを置く」ことです。いずれにせよ、これは避けなければならないものです。私の答えはセキュリティに関するものです。あなたは彼の要求を確実にするように言っていますが、彼はそれをする必要はありません。もし彼が彼のデータを証券化したいのであれば、クライアントの要求に頼る必要はありません。 – dievardump

+0

私はどんなゲームでも働いていません。私は、データを保護するためのより良い方法を模索している例を挙げています。ただもっと学びたい。 :) – sm21guy

0

parse.phpを呼び出すには、ログインする必要があります。リクエストで有効なセッションIDが指定されていない場合は、処理を拒否します。

関連する問題