問題タブ [protect-from-forgery]

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 に答える
1215 参照

ruby-on-rails - API 仕様の rspec での protect_from_forgery のスタブ化

Rails アプリ用の API を作成していて、それを CSRF 攻撃から保護したいと考えていprotect_from_forgeryます。のリクエスト スペックをApiController書いていますが、リクエストの CSRF が無効な場合に取得するレスポンスのスペックを書きたいと考えています。protect_from_forgery私の質問は、無効な CSRF トークンを模倣するためにの動作をスタブするにはどうすればよいですか?

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

ruby-on-rails - モバイルでの InvalidAuthenticityToken エラー

InvalidAuthenticityToken と protect_from_forgery について StackOverflow で複数の質問と回答を読みましたが、賢明なものはありません。

毎日何百ものこれらのエラーが発生する Web サイトがあります。それらは主にモバイルからのもののようですが、サンプルで確認しただけです。

AuthenticityToken が存在する理由と追加の必要性を理解しています

application.html(私が持っています)に、アプリケーションコントローラーにprotect_from_forgeryを持っています。csrf_meta_tags と次の両方があります。

デフォルトのように、私のアプリケーションコントローラーで。

protect_from_forgeryを削除することで問題を「解決」できることはわかっていますが、CSRF攻撃に対して脆弱になるため、実際には解決策ではありませんか? 行われるフォームの投稿に対して、protect_from_forgery に「例外」を追加することはできますが、それは私を同じように脆弱なままにしてしまいますよね?

編集: Cookie を無効にしてモバイルでフォームにアクセスしようとしたところ、422 エラーが発生しました。ただし、例外を発生させることはできませんでした。「結果」関数の例外を追加するとそれが削除されましたが、それにより脆弱になると思いますか?

Edit2: 同じページに複数のフォームがあります (検索フォームなど)。おそらくこれは問題に影響を与える可能性がありますか?

1日に何百人ものユーザーにエラーが発生し、ウェブサイトがハッキングに対して脆弱になるのではないかと恐れているため、削除できません。

それで、なにかお手伝いできますか?まともな中間点はありますか?

protect_from_forgery を変更しても、ハッカーによってデータベースが破壊されないことを確信できる方法はありますか?

サイトで API を使用していませんが、すべてのエラーは同じ種類のフォームから発生しています。この問題にはJavaScriptの部分があることは理解していますが、その情報を使用して問題を解決する方法は実際にはわかりません。

前もって感謝します!

私が得る例外の例:

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

ruby-on-rails - 「protect_from_forgery with:exception」はプロセスをクラッシュさせますか?

私は、機密性の高い (ログアウトされた) エンドポイントで悪意のある人物が大規模に JSON を POST するシナリオに直面しています。

protect_from_forgery with: :exceptionIP によるレート制限に加えて、Rails アプリに before_filter として追加したいと考えています。

そのフィルターは 500 レスポンスを返しますか、それとも実際に Rails プロセスをクラッシュさせるキャッチされない例外を発生させますか? 現地では後者のようです。

私の懸念は、認証されていないボットがプロセスを繰り返しクラッシュさせることにより、サービスを効果的に DDOS することです。

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

security - クライアント側のマスクされていないフィールドにSSNデータを入力している人を検出する方法は?

すべての機密データがマスクされている画面共有アプリケーションがあります。顧客が SSN などの機密データをマスクされていないフィールドに入力するシナリオがいくつかあり、それによってソリューションが直接侵害されます。

クライアント側だけでDBやその他のサーバー側の情報にアクセスせずに、SSNや機密データを入力していることを検出できる方法はありますか?

たとえば、SSN と住所フィールドを含むフォームを考えてみましょう。アドレス フィールドに誤って入力された SSN を表示しないようにするにはどうすればよいですか?


編集

現在の私のアプローチは、すべてのパターンをクライアント側のプロパティ ファイルに格納することです。たとえば、私のアプリケーションの一般的なパスワードは 8 文字で、次のルールがあります。

この正規表現をクライアント側に保存します。ユーザーが入力を開始したら、パスワードまたはユーザー名のどちらを入力しているかを確認します。同様に、電話番号を国 - 市外局番形式に分割でき、その正規表現も使用できます。しかし、SSN は純粋な 9 桁の乱数であるため、行き詰まっています。

DOM からフィールド名を抽出することで、カーソルの正確な位置と、ユーザーがデータを入力しているフィールド名を取得できます。また、サポートされているデータ形式のタイプを使用することで、ユーザーが必要なデータを入力しているか、それ以外のデータを入力しているかを大まかに把握できます。私が間違っている場合は修正してください

9 月: 2016 年 9 月 14 日 画面共有ソリューションをブラウザーで実行しているため、Web サイトでプラグ可能なコンポーネントとして使用されるため、ページの再構築を依頼するのは簡単ではありません。以下は、あなたの入力に基づいて最終化したアプローチです。すべてのパターンが格納された 1 つのファイル ファイルを作成します。1.与信関連の情報は全て決まったパターンがあるので問題ありません 2.パスワードにもいくつかのルールやパターンがあるので、それらも確認できます

データの露出を避けるために、watsapp が「ユーザーが入力中です」と表示するように、ユーザーがデータを入力するまで一般的なメッセージを表示します。ユーザーがタブまたは次のフィールドに移動すると、インライン パターン検証後にデータのみが表示されます。

ここに残っているのは、SSN、電話番号などのパターンを持たないフィールドを検出する方法だけです。これについても何らかの解決策があることを願っています。

よろしくハリー

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

ruby-on-rails - JSビューをレンダリングするときにInvalidCrossOriginRequestを発生させるRuby-on-Railsテスト

ビューをフォーマット .js.erb でレンダリングするアクションを持つコントローラーをテストしています。これらのアクションのテストでは、次のエラーが発生します。

Minitest::UnexpectedError: ActionController::InvalidCrossOriginRequest: セキュリティ警告: 別のサイトの埋め込みタグが保護された JavaScript を要求しました。何をしているのかわかっている場合は、このアクションで偽造防止を無効にして、クロスオリジンの JavaScript 埋め込みを許可してください。

これらのアクションに例外を設定すると、偽造防止によってこのエラーが発生しますが、無効にしたくありません。

これが私のコントローラーです:

このコントローラーのテストは次のとおりです。

このエラーを修正する方法を知っている人はいますか?

前もって感謝します

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

ruby-on-rails - protect_from_forgeryを使用すると、セッションの有効期限が切れたRails 403応答

ユーザー セッションの有効期限が切れた後、を持つコントローラーに対してPOSTまたはPUT要求を行うprotect_from_forgeryと、サーバーは、ログアウトしたユーザーに対して予期される 401 ではなく、403 で応答します。

コントローラーが 401 コードを返すと、クライアントはユーザーをログイン画面にリダイレクトします。

403 ごとにリダイレクトしたくありません。セッションの有効期限が切れない限り、ユーザーが追い出されることはありません。

私はグーグルを試し、ドキュメントに記載されているようにさまざまなフラグをいじってみましたが、運がありませんでした。セッションの有効期限が切れたときに、protect_from_forgery が 401 を返すようにするにはどうすればよいですか?