問題タブ [csrf-protection]

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.

0 投票する
1 に答える
1384 参照

ruby-on-rails-3.2 - 静的ページでの CSRF 保護

フォームを持つ静的サイトがあります。フォームは、送信されたデータを取得する Rails エンドポイントに送信されます。静的サイトと Rails エンドポイントは同じドメインにありますが、異なるサブドメインにあり、すべてのトラフィックは完全に HTTPS 上にあります。

Rails CSRF がサーバー生成フォームに対してどのように機能するかを理解しています。しかし、私の場合、これらのフォームは静的な HTML ページにあります。すべてのリクエストヘッダーが偽造できることを理解しているので、それに頼ることはできません。

このシナリオで強力な解決策が不可能な場合、私の最後のオプションはサーバー生成フォームに移行することです (これは今のところ避けたいと思います)。

これに対する適切なアプローチに関する提案は大歓迎です。または、すでにこれを行っているシステムまたはライブラリへのポインタ。

ありがとう

0 投票する
1 に答える
370 参照

symfony - Symfony 2 CSFR 保護とバックボーン アプリケーション

Symfony 2 に CRUD コントローラーがあります。このコントローラーのバックボーン アプリケーション ラッパーを作成したいと考えています。しかし、アプリケーションのロジックには、 「バックボーン フォーム アプリケーションに CSRF 保護を実装する方法は?」という疑問があります。

いくつかの方法があります:

  1. フォームを生成する前にトークンをリクエストします。
  2. トークンを組み込んだアンダースコア テンプレートを生成します。
  3. Symfony で保護を無効にして、自転車を発明してください。

問題に対する適切な解決策を選択するために、あなたの助けをいただければ幸いです。

0 投票する
1 に答える
926 参照

java - CSRF保護:リクエストごとにCSRFトークンを送信する方法

私の最初のコードは、CRUD操作のように、データベースの状態を変更する可能性のあるリクエストのトークンを生成しました。トークンはリクエストごとに生成されました。他のデータと一緒にJSON形式でクライアント側に送信され、このトークンがリクエストとともに返され、リクエストの完了後に変更されることを期待していました。しかし、コードの一部(CRUD操作)にのみ実装したため、やり直してWebアプリ全体にするように言われました。これを行う最良の方法はフィルターを使用することだと思います。

私の問題は、クライアントにリクエストごとに「トークン」を送信させるにはどうすればよいですか?クッキーにセットしますか?私のオプションは何ですか?ご意見をお聞かせください。

0 投票する
1 に答える
2804 参照

symfony-forms - Symfony2.1で無効なCSRFトークンのメッセージを手動で変更またはキャッチする

私はSymfony2.1を使用しています。フォームに対するCSRF保護が組み込まれています。CSRFトークンが無効な場合に返されるエラーメッセージは次のとおりです。「CSRFトークンが無効です。フォームを再送信してみてください」。

従来の呼び出しを使用して、Twigテンプレートのフォームの上部に表示します。

返されたメッセージを変更するにはどうすればよいですか?

別の方法として、より高度な可能性は、Twigテンプレートに多くのオプション/リンクを表示するために、このエラータイプをキャッチすることです。何か案が?

0 投票する
1 に答える
3302 参照

security - YII フレームワークでの CSRF トークンの変更頻度

最近、csrf トークンについて読みました。プロジェクトの開発に YII フレームワークを使用しています。config/main.php で csrf 検証を有効にしましたが、yii は非表示のフォーム フィールドにトークンを入れています。そして、トークンが有効かどうかを確認します。すべて順調。しかし、リフレッシュしてもCSRFトークンの値が変化せず、ページ内のすべてのフォームが同じトークンを使用していることを確認しました。

これは私を困惑させました。csrf トークンが変更されていない場合、ハッカーはそのトークンを自分のリクエストでも使用でき、有効なリクエストを作成できます。では、csrf トークンはどのようにセキュリティを提供できるのでしょうか? YII フレームワークに問題がありますか? それとも私は何かを逃したのですか?何かを逃したことを願っています。トークンを手動で生成する必要がある場合は、生成と検証の方法を教えてください (できれば YII フレームワークで)

0 投票する
1 に答える
173 参照

csrf - CSRF、JavaScript、jquery

CSRF 攻撃が、被害者のブラウザに既に存在するグローバル JavaScript 変数の内容を読み取ることは可能ですか?

私の計画は、ユーザーが正常にログオンしたときにセッションに保存される CSRFToken 値をアプリケーションに保存し、それをアプリケーションで使用するためにグローバルにアクセス可能な JavaScript 変数に保存することです。jQuery を使用して、この値をアプリケーション内のフォーム ポスト アクションに自動的に追加します。サーバー側では、値が一致するかどうかを確認し、一致が見つからない場合はアクションを完了するかブロックします。

私の理解では、CSRF 攻撃はさまざまな方法で展開できますが、いずれも被害者をサード パーティのサイトにリダイレクトして悪意のあるコードを実行する必要があります。たとえば、サードパーティ サイトはフォーム リクエストの偽造を試みることができますが、CSRFToken の内容を知らない限り、アクションは失敗します。もちろん、彼らはどうにかしてそれにたどり着くことができます。これは可能ですか?

0 投票する
1 に答える
9739 参照

codeigniter - Knockout postJson 関数呼び出しで「要求したアクションは許可されていません」というエラーを回避する方法

CodeIgniter は、「要求したアクションは許可されていません」というエラーを返します。CSRFのチェックに失敗した場合。私が理解しているように、これは、攻撃が行われていないことを証明するフォームからの隠しトークンが POST にないことを意味します。

トークンは、CI form_open 関数の呼び出しで自動的に生成されます。

私の場合、Knockout を使用して、次のように ViewModel の内容を投稿して保存しています。

特定のページのCSRF設定をオフにするだけの解決策を他の場所で見つけましたが、それは良い解決策とは思えません。

おそらく、トークンが受信されていないため、postJson 呼び出しは既存のフォームを送信していません。必要なトークンを JSON データと共に送信する方法、または既存のフォームで JSON データを送信する方法はありますか?

0 投票する
2 に答える
1586 参照

php - Zend Framework 2 - CSRF トークン サーバー側の検証

次の問題が頭に浮かびました: すべての標準フォームで使用したい汎用フィールドセットを作成しました。と が含まれていCSRF-TokenますSubmit-Button

クライアント側でうまく機能します。しかし、私が疑問に思うのは、これを使用するZend\Form\Element\Csrfと、サーバー側でこのトークンが問題ないことを証明するロジックがどこにあるのかということです。それとも、これZendはバックグラウンドのどこかで処理されますか?

ありがとう!

0 投票する
2 に答える
929 参照

php - ユーザーに対して透過的な Web フォーム ボット保護

ここ数日、ボットが使用する Web フォームを保護する方法についてよく考えていました。使い方は乱用で、約 80 万件のボットのクエリが 8 時間以内に処理されます。

状況の概要を簡単に説明しましょう。不足している情報があればお尋ねください。

ボット:

  1. ボットには異なる IP があります。
  2. ボットは、ユーザー エージェントを実際に存在するものに変更します。
  3. ボットが js をロードして Cookie を持っているかどうかは不明な点です。

問題点:

  1. 外部リソースから送信される可能性があるため、フォームは非表示のトークン フィールドを使用できませんでした。CSRF トークンを認識せず、トークンを生成できないさまざまな Web サイトなどのリソース。CSRFが使えなくなる。
  2. Web サイトはブラウザにキャッシュする必要があり、疑わしい動作などの例外的な状況でのみキャッシュがリセットされる場合があります。
  3. データベースを集中的に使用することはできません (!)。

現在の様子:

  1. 有効期限が何かにハッシュされた Cookie カウンター + 追加の文字は、システムだけがいつ挿入したかを認識します。
  2. ブラウザが Cookie を処理できなかった場合は、データベース ログが使用されました。ユーザーがサーバーに到達しない場合、ブラウザーのキャッシュに問題があります。結果: 検証が実行されておらず、カウンターがインクリメントされていません。
  3. X 回の試行制限を超えたユーザーに reCaptcha が適用されました。

思いついたアイデア:

  1. いくつかのコンテンツを含む iframe を提供し、0 を期限切れにします。iframe は単純な Cookie ロジックを作成します。
  2. Iframe : cookie が設定されていない場合 - 設定し、cookie が設定されている場合は確認します。ユーザーが制限を超えていない場合-カウンター+1を設定し、超えた場合-特定のページに送信すると、キャッシュがリセットされて警告が表示されます。

ここでの難点は、ボットが Cookie をサポートしておらず、コンテンツがキャッシュから提供されている場合はどうなるかということです...ユーザーがサーバーに到達しないため、データベースは何も書き込みません。ただし、ユーザーがキーワードを変更すると、キャッシュがリセットされ、背後のロジックが機能します。

2 番目の問題: ボットが JS をサポートしていない場合 (キーワードを切り替えると、ボットは除外されます)。ただし、コンテンツがキャッシュから提供されている間はリダイレクトできません。

3 つ目の難点: ボットが ReCAPTCHA を解読したら?:)

*質問: *

この状況であなたは何をしていましたか?あなたが考えている手順を説明してください。物事に対するあなたの視点に本当に感謝します。すべてのアイデアは他のアイデアで洗練される可能性があり、優れた保護スキームを考え出すことができます! 君たちありがとう!

0 投票する
1 に答える
1667 参照

django - django.middleware.csrf.get_token() の使い方

次のシナリオを考えてみましょう: ページは で読み込まれ{% csrf_token %}ます<form>。その後、このフォームの送信 (非表示の csrf_token を含む) は、ページをリロードせずに ajax (投稿) を使用して実行されます。
サーバー側では、トークンをクライアントに送り返し、にあるトークンを置き換える必要があることを理解してい ます<form>.
token と send with response 私は django.middleware.csrf.get_token() を使用することを考えていますが、コードではクライアントから送信されたものを返すだけのようです。
get_token() は最新のものを返しますか?