2012-02-08 21 views
1

最近、自分のサイトのcsrf保護ライブラリを作成しています。CSRFトークン - 2つの要求=失敗?

$ _SESSIONで生成されていないリクエストに対してランダムトークンを生成します。私のサイトで

  1. ユーザーが自分のサイト(example.com)とログインに行くしかし、このシナリオを考える -

    すべてがテストされ、罰金、うまく動作します。

  2. 今度は別の悪意のあるサイトを開きます。

悪質なサイトになりました(JavaScriptで)行いますhttp://example.com FIRST

  1. RUN ...とJavaScript(正規表現または何でも)の形で、HTML内のCSRFトークンを取得して - と言うその "randomToken" 。 JavaScriptで
  2. - 今これは明らかにだけ取得していない、あまりにもポストで行うことができhttp://example.com/my-profile/?deletemyaccount=1&token=randomToken

をフェッチします。

私はHTTP_REFERERのチェックを考えましたが、それは信頼できません。

これを防ぐにはどうすればよいですか?これは本当に可能ですか?私の考えでは、この種の攻撃はjQueryで簡単に行うべきです。

+0

AJAXを使用すると非常に可能です。リファラーは、AJAXリクエストですべてのヘッダーが操作される可能性があるため、どちらも役に立ちません。私はあなたがこの幸運を忘れていると思います。代わりにCAPTCHAを使用してみてください。 – Kenaniah

答えて

3

他のサイトは、javascriptでサイトのコンテンツを取得できないはずです。ブラウザは明示的にこれを禁止します。 Same Origin Policyをチェックしてください。

+0

ありがとうございます!受け入れられた答え!だから、唯一の方法は私自身の起源に対するXSS攻撃です。これは実際に多くを説明します。 –

関連する問題