2011-08-10 10 views
4

私はAJAXのセキュリティに関するいくつかの質問をクリアしたいと考えていました。だからここに私の頭を包み込むことを試みているシナリオがあります。AJAXセキュリティに関する質問

私はAJAXを使用して、半感度の高い素材をページにリクエストしています。たとえば、私はユーザーのIDをPHPファイルに渡し、自分に関するいくつかの情報を返します。さて、誰かがこのJavascriptリクエストをエミュレートするのを止めて、別のIDをPHPスクリプトに渡すのは何ですか?

  • これを防ぐためにサーバがありますか?
  • DOMは、クライアント側のJavascriptとは対照的に、元来は、元の場所にある
    のJavascriptを認識していますか?
  • AJAXを使用して機密情報を要求する際のセキュリティ上の問題は何ですか?
  • 私はsuPHPを使用していますが、これにはこのような状況で何らかの影響がありますか?
+0

'AJAX'は' PHP'ファイルにアクセスするためにクロスドメインに行くことができません。 – Phil

+0

これを回避するには、クロスドメインのものを実行してAJAXに渡すPHPスクリプトを書いてください – Im0rtality

+0

これは私がここで読んできたものですか? http://code.google.com/p/browsersec/wiki/Part2#Same-origin_policy_for_XMLHttpRequest – grep

答えて

10

Ajax呼び出しは、非同期(Webブラウザをリロードしない)以外は、他のHTTP要求とまったく同じです。だからあなたはあなたのWebサイトで現在使っている認証を使うべきです。

これは、Windows統合セキュリティ、クッキーなどのいずれかになります。基本的には、PHPスクリプトはリクエストがアプリケーションの有効なユーザーからのものであることを確認するだけです。

+0

それがアプリケーションの有効なユーザーである場合でも、別のユーザー情報を取得する要求を偽造しようとしています。この時点で、SESSIONチェックは有効なユーザーであるため、アプリケーションを悪用しようとすると無意味に見えます。 – grep

+0

他のユーザーのデータにアクセスしようとすると、アクセスが拒否されます。スクリプトは、どのユーザーが要求を行っているのか(これは認証であること)と、要求している情報を知る必要があります。 – tskuzzy

2

AJAXは本質的にセキュリティ保護されていません。リソースをリモートで使用できるようにし、完全に安全に保つことはできません。リクエストがクライアント側のjavascriptから来たのか、それともリクエストを偽ったのかを識別するための100%信頼できる方法はありません。

ほとんどの場合、このような偽造を行うのは難しくなります。

+0

ユーザがログインした後でリクエストが発生した場合、AJAXでリクエストされたPHPファイルが出力される前にSESSIONチェックを行う必要がありますか?もしそうならスクリプトを終了させますか? – grep

+0

"クライアントサイドのJavaScriptからリクエストが入ったのか、それともリクエストを偽ったのかを識別するための100%信頼できる方法はありません。 - 確かにあります。ブラウザはAjaxリクエストですべてのCookieを送信し、PHP側ではユーザーの$ _SESSIONにアクセスできるため、他のページと同じように通常の認証が必要です。 – AndrewR

+0

@andrewr:ユーザーが自分のリクエストを偽ったり、セッショントークンを盗まれたり、CSRF経由でajaxリクエストを発したりすることはできません。 –

関連する問題