問題タブ [csrf]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - CSRF の脆弱性 / Cookie に関する質問
知っている人からの意見を求めたいだけです。私は CSRF の脆弱性を検討していましたが、これは私が知っている最も一般的な方法であると思われます。その方法は、返された html でトークンを作成し、同じ値の Cookie を追加することです。したがって、スクリプトが投稿を行おうとすると、have to guess the token thats embedded in the web page
成功するはずです。
しかし、彼らが特定の Web サイトをターゲットにしている場合、なぜ彼らはスクリプトを使用できないのでしょうか。
- ページで get を呼び出します (スクリプトがアクセスできなくても Cookie は返されます)
- HTML を解析してトークンを取得する
- そのトークンを含む投稿を呼び出します (戻ってきた Cookie が送り返されます)
- ユーザーに気づかれずにフォームを送信した
スクリプトは Cookie の内容を知る必要はありません。Cookie が常に送受信されるという事実を利用しているだけです。
ここで何が欠けていますか?これは不可能ですか?これはよく考えるとかなり怖いと思います。
この行の下は、質問に答えるために読む必要はありません:)
この脆弱性は、認証が現在行われている主な方法である Cookie に基づいて行われるという事実に依存しています。
私が考えることができる別の解決策は、認証をページレベルにすることです。したがって、ログインすると、返された html にそのトークンが含まれます。クリックするすべてのリンクにはそのトークンが含まれているため、Web サーバーが要求を受け取ると、ユーザー/セッションを識別する方法があります。それに関する問題は、それ以外のナビゲーションを使用すると、「認証されていない」(たとえば、URL を入力する) ことになり、おそらく次のようになるため、URL で見栄えがよくないことです。
https://www.example.com/SuperSecretPage/1/123j4123jh12pf12g3g4j2h3g4b2k3jh4h5g55j3h3
しかし、安全性がより重要である場合、きれいな URL が 2 位であることは理解しています。
私は Cookie についてすべてを知っているわけではありませんが、ユーザー エージェントが Cookie にもう少し注意を払っていたらどうでしょうか?
たとえば、送信される Cookie がタブによって異なる場合はどうなるでしょうか。私たちは今ではタブを使ってサーフィンしていますよね?では、Cookie のスコープがタブである場合はどうなるでしょうか。したがって、タブ 1 でバンキング サイトを開き、タブ 2 でサーフィンしている場合、タブ 2 で取得/投稿を呼び出すスクリプトは、タブ 2 で発生した Cookie のみを送信します。
または、Cookie が保存されている場合はどうなりますか / ドメイン。そのため、私が example.com にアクセスしている間、返された Cookie はすべて example.com の Cookie コレクションに入ります。そして、私が www.mybankingsite.com にアクセスすると、すべての Cookie が mybankingsite.com コレクションに入れられます。したがって、example.com にアクセスして get/post を呼び出すスクリプトを実行すると、ユーザー エージェントは example.com Cookie のみを送信します。これは、要求されたドメインの Cookie を送信することとは異なります。たとえば、スクリプトが example.com の Web ページ内で mybankingsite.com の get を呼び出した場合、ユーザー エージェントは mybankingsite.com Cookie を送信しません。
ユーザー エージェントの動作を制御できないことはわかっていますが、可能性を探っているだけです
php - リクエストの送信元を確認するためのセキュリティを強化するにはどうすればよいですか
私は 1 つの PHP Web アプリケーションを開発しています。誰も簡単に機能を壊すことができないように、アプリケーションのセキュリティを強化したいと考えています。
私の問題についての簡単な説明: あるモジュールには、リクエストのソースをチェックしている段階が 1 つあります (このリクエストの送信元)。
現在、HTTP_REFERRER
変数を使用しています(phpで利用可能)。この変数の値を 1 つの特定の URL (例: http://www.example.com/test.php ) でチェックしています。完全一致が存在する場合は、私だけがさらなるアクションを呼び出しています。
上記のアプローチと少し混乱しています.HTTP_REFERRERを使用するか、IPアドレスで確認する必要がありますか(特定のIPアドレスからのものである場合は有効なリクエスト)?
また、セキュリティを提供するためのより良いアプローチも知りたいです。
誰かがアイデアを持っているので、共有してください。
前もって感謝します
django - SWFUpload with Django 1.2 csrf problem
I`m trying to upload files to Django with SWFUpload. Found this article Django with SWFUpload. But found one problem. In Django 1.2 a csrf requires a csrf token to be send on every form submit, and it includes files that are send with SWFUpload.So uploading doesnt until i turn off csrf ( globally or for view using @csrf_exempt decorator). Is there a better way to handle this rather than turning off csrf?
I know that i can pass custom data with SWFUpload post_params: {"csrfmiddlewaretoken" : ""},. But i don`t know how to get only value of csrf token in template, not a full input tag.
ruby-on-rails - Cookieが無効になっている場合のCSRF保護の処理
Cookieが有効になっていない場合、フォーム投稿はをスローしActionController::InvalidAuthenticityToken
ます。ほとんどの場合、アプリケーションにログインするにはCookieが必要であることを示すメッセージで例外を処理します。
ただし、私のアプリケーションのユーザーができることの1つは、ログインしている場合とログインしていない場合がある他の人と共有するコンテンツを作成することです(必須ではありません)。さらに、作成者がそうすることを選択した場合、このコンテンツはパスワードで保護することができます。これは私が問題にぶつかっているところです。重要な場合は、を使用してactive_record_store
おり、設定session_store
も行っていconfig.action_controller.session
ます。
訪問者がCookieを有効にせずにパスワードで保護されたコンテンツのロックを解除しようとすると、アプリケーションは例外をスローし、訪問者の観点からはクラッシュします。このような状況に対処できるようにしたいと思いますが、どうすればよいかわかりません。例外を処理し、Cookieをチェックせずにコンテンツのロックを解除できるようにすることはできますが、そうすると、とにかく脆弱性が発生するため、CSRFに対するアクションを保護しない方がよいでしょう。または、フォームを認証できるようにCookieを有効にするように要求することもできますが、この状況でCookieを要求する理由は実際にはありません。
正しく理解していれば、そのアクションの保護を無効にすると、ロック解除された保護されたコンテンツがCSRFの脆弱性にさらされるだけですが、Cookieが有効になっていない場合は、問題になりますか?クッキーの不足を処理しながら保護する方法はありますか?
python - djangoのcsrfエラー
自分のサイトへのログインを実現したい。基本的に、DjangoBookから次のビットを一緒にコピーして貼り付けました。ただし、登録フォームを送信すると、エラーが発生します(CSRF検証に失敗しました。リクエストは中止されました)。誰かがこのエラーを引き起こした原因とそれを修正する方法を教えてもらえますか?
これが私のコードです:
views.py:
register.html:
python - 常に応答があるとは限らないビューの Django CSRF を無効にする
CSRFトークンを必要としないPOSTを受け取るDjangoビューがあります。したがって@csrf_exempt
、ビューでデコレータを使用しました。問題は、ビューから応答を発行しない場合があることです (これは Twitter ボットであり、すべてのツイートに対して HTTP POST を受信し、すべてのツイートに応答したくありません)。応答を発行しないと、次のエラーが表示されます。
resp (これは応答だと思います) は None です。なぜなら、ビューはただreturn
. このエラーを回避し、POST で CSRF トークンを要求しないようにするにはどうすればよいですか。
ありがとう!
django - django csrfトークンをHTMLに直接埋め込むにはどうすればよいですか?
私のdjangoアプリ内で、ユーザーのホームページに「メッセージ」として表示されるhtmlの文字列をデータベースに保存しています。これらのメッセージの一部にはフォームが含まれていますが、テンプレート言語で記述されていないため、csrf トークンを挿入できません (したがって、アプリが壊れます)。
このトークンを編集中の python ファイル内から直接挿入する方法はありますか? 私は次の行に沿って何かを探しています:
同様のシナリオで機能する他のソリューションは素晴らしいでしょう。ありがとう
編集: トークンはセッションごとに異なるため、実際には機能しません。データベースに保存することはあまり役に立ちません。ビュー内でトークンを動的にロードする方法はありますか?
php - X-Requested-Withヘッダーサーバーチェックは、ajax駆動型アプリケーションのCSRFから保護するのに十分ですか?
私は完全にajax駆動型のアプリケーションに取り組んでおり、すべてのリクエストは基本的にメインコントローラーに相当するものを通過します。メインコントローラーは、基本的には次のようになります。
これは一般的に、クロスサイトリクエストフォージェリから保護するのに十分ですか?
ページ全体がリクエストごとに更新されない場合、ローテーショントークンを使用するのはかなり不便です。
リクエストごとにグローバルjavascript変数として一意のトークンを渡して更新できると思いますが、どういうわけかそれは不器用で、とにかく本質的に安全ではないようです。
編集-おそらく、ユーザーのUUIDのような静的トークンは、何もないよりも優れているでしょうか?
編集#2-ルークが指摘したように、これは髪を分割する質問かもしれません。私は両方の方法で憶測を読み、古いバージョンのフラッシュがこの種のシェナニガンに悪用可能であるという遠いささやきを聞きました。私はそれについて何も知らないので、これがどのようにCSRFリスクであるかを説明できる人には賞金をかけています。それ以外の場合は、Artefactoに渡します。ありがとう。
javascript - CSRF攻撃には、ターゲットサイトのjavascript変数にアクセスまたは操作する直接的な方法がありますか?
ajax駆動型サイトがjavascript変数として保存された一意のトークンを使用し、CSRFを防ぐためにすべてのリクエストでそれを検証する場合、攻撃ベクトルを開きますか?サイトにXSSホールがない場合に限りますか?
iis - ColdFusion-防止-クロスサイトリクエストフォージェリ(CSRF)
私は、ColdFusion 9アプリケーションでクロスサイトリクエストフォージェリ(CSRF)を防ぐ方法を学びたいと思っています。オンラインでいくつかのチュートリアルを見つけましたが、どれも包括的ではないようです。私が見つけた最高のものは次のとおりです。http ://www.mollerus.net/tom/blog/2009/01/an_easy_block_for_crosssite_request_forgeries_csrf.html しかし、それは信じられないほど包括的または明確な例ではありません。
CSRFを防ぐために利用できるチュートリアル、例、またはポインタはありますか?
ありがとう!