2011-12-10 5 views
5

私はこの質問が以前に尋ねられたと確信していますが、私には意味がある方法でそれを説明するスレッドは見つかりません。AJAX通話を「安全にする」方法

Javascriptで書かれたブックマークレット/ブラウザプラグインを作成しています。このスクリプトはAPIへの呼び出しを行い、あるサイトから別のサイトにユーザーの活動情報を効果的に送信します。 (ユーザーがFacebookのステータスを投稿したときにつぶやくと思う)

このサイトはjavascriptをサイトにロードします。私が使用しているAPIでは、APIの秘密コードを使用してMD5ハッシュを生成する必要があります。これは問題ではない、私は別の場所でホストしているPHPスクリプトにajax呼び出しを行い、正しい文字列を返す。

問題点私は、ユーザーが独自の文字列を生成するためにこの同じスクリプトを呼び出し、秘密がAPIを悪用するために呼び出されることを希望しません。私がそれらを作るときに私はこのAPIへの呼び出しを許可することができますか?

これは間違った方向から近づいているかもしれません。

答えて

0

1) GUIDのようにDB上にトークンを開く必要があります。

このguidはいくつかの情報を表し、一度だけ実行できます( "isAlreadyuse" -typeビットというテーブルにdbフィールドを入れる)。今

、Ajaxが自分自身を呼び出します

- あなたは、サーバーにこのGUIDを送信します。

サーバーは、GUIDが

を存在し、そのロジックを発するかどうかを確認し、「1」にthefieldを更新します。

3

クライアントがJavaScriptをどのように実行するかを指定することはできません。 「安全な」要求を作成する方法や、攻撃者が変更していないことを保証する方法はありません。これはクライアント/サーバーシステムの性質です。ページ自体はGreaseMonkeyを使って変更することができ、任意のリクエストはTamperDataを使用して変更または再生することができます。

+0

リプレイ攻撃は防御できますが、リプレイ攻撃ではなく、最初に許可された操作ではないと想定しています。 –

+1

@pst JavaScriptで行うことができれば、攻撃者はJavaScriptでもそれを行うことができます。 – rook

関連する問題