問題タブ [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 に答える
1181 参照

ruby-on-rails - Rails の protect_from_forgery は本当に便利ですか?

これを質問しているのは、ajax や flash を使用して Rails と通信し始めると、生活が非常に複雑になると感じているからです。

CSRF から保護するのが良いことはわかっていますが、代わりにリファラーなどをチェックすることはできませんか?

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

ruby-on-rails - Railsリクエストフォージェリ保護設定

Railsの初心者を助けてください:)クラスprotect_from_forgeryに属性のない呼び出し(デフォルトで指定)があります。ApplicationController

基本的にコードは次のとおりです。

私がすべきだと思うのは、正しいのない POST リクエストを防ぐ必要があるということですauthenticity_token。しかし、以下のような jQuery でポスト リクエストを送信すると、正常に動作します (データベースで実行される update ステートメントがあります)。

送信されたパラメーターの中にないことがコンソールに表示さauthenticity_tokenれますが、リクエストは引き続き有効と見なされます。何故ですか?

UPD config/environments/development.rb で構成設定が見つかりました

DEV 環境とローカル リクエストにより、これらの jQuery ポスト リクエストは問題ありませんでした。

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

php - Rails3のprotect_from_forgeryの問題

HTTPを介して相互に通信する必要がある2つのアプリケーションがあります。1つはPHPアプリで、もう1つは私のメインアプリであるRailsアプリです。PHPアプリにデータをPOSTしてRailsアプリと通信する必要がありますが、そうすると、InvalidAuthenticityTokenエラーが発生します。とにかくこれの周りにありますか?または、Railsアプリが認証されるように、POSTを渡すための独自のトークンを作成するにはどうすればよいですか?

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

ruby-on-rails - Rails 3、protect_from_forgery、および IE8 の問題

すべてのブラウザー (Safari、Firefox、IE6、7、8 など) で問題なく動作する Rails アプリがあります。

かなりロックダウンされたバージョンの IE8 を使用している新しいユーザーがいて、アプリにアクセスしようとするとすぐに、ログイン ページに到達する前に、Windows 認証プロンプトが表示されます。提供されたログインの詳細を入力しようとすると、失敗します。認証プロンプトが表示されないはずなので、失敗することはあまり心配していません。

ApplicationController から protect_from_forgery を削除するとすぐに、彼らはシステムに正常にアクセスできます。

Cookie などを許可することを提案しようとしましたが、まだ問題が発生しています。私たちが見ることができる他のものについて誰か提案がありますか

これに追加するだけです。このサイトは、ベースキャンプ スタイルのサブドメイン システムを使用しています。それが問題かどうかは定かではありません。

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

ruby-on-rails - protect_from_forgery は PUT/DELETE リクエストを保護しません

でデモ アプリケーションをrails new demo作成し、 でスキャフォールディングされたユーザー コントローラーを生成しましたrails generate scaffold User name:string email:string。スキャフォールディングされたコードにはApplicationControllerwithprotect_from_forgeryがあり、 UserControllerwhich から派生したものもありますApplicationController

webrick を実行し、ユーザーを追加します。Authenticity トークンは、/users の POST で約束どおりに機能します。

まだRails 3.0.5を使用しているため、次のことができます。

そして、トークンを与えずにユーザー 3 を変更します。

また、DELETE でも同じことができます。

それは私に与えます:

それらのリクエストと一緒にトークンを送信しないのに、なぜこれらのことができるのか説明していただけますか?

0 投票する
3 に答える
15777 参照

ruby-on-rails - Railsのprotect_from_forgeryフィルターをjsonのみでオフにする方法

Rails3 で構築された Web サイトがあり、モバイル クライアント アクセス用の json API を実装したいと考えています。ただし、protect_from_forgery フィルターが原因で、クライアントから json ポスト リクエストを送信します。クライアントはサーバーからデータを取得しないため、クライアントが auth_token を受け取る方法がないため、json リクエストに対してのみ protect_from_forgery オプションをオフにしたいと思います (rails3 はデフォルトでこれを行うと思っていましたが、明らかにそうではありません)。 .

hereで同様のトピックが議論されていることは知っていますが、その場合、彼は投稿リクエストを送信する前に auth_token を受け取ります。

だから私の質問は、json に対してのみ protect_from_forgery をオフにすることです。これはこれを行う良い方法ですか? はいの場合、どうすればよいですか?いいえの場合、代替手段は何ですか?

参考までに、次の ajax リクエストを使用します

ActionController::InvalidAuthenticityToken エラーが発生します。

ちなみに、次のcurlコマンドは機能しますが...

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

ruby-on-rails - デプロイ後の無効な認証トークン

Rails アプリの新しいバージョンをデプロイするたびに、以前のリリースの認証トークンが無効になります。それが正常な動作です。私はそれを変えようとはしていません。

ただし、最後のバージョンでまだページを開いているユーザーが投稿リクエストを実行しようとすると、無効なトークン エラーが発生します。

このエラーが発生しないようにするにはどうすればよいですか?

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

ruby-on-rails - Rails 3のprotect_from_forgeryが正しく機能していませんか?

protect_from_forgeryデフォルトでapplication_controller.rbにあるRails 3.0.2を使用しています。

をトリガーしたかったのInvalidAuthenticityTokenです。
これを行うために、この JavaScript をページに追加しました。

Firebug で DOM をチェックすると、authenticity_token隠しフィールドが正しく更新されていることがわかります。

フォームを送信してサーバーからのログを確認すると、相対パラメーターが正しく「aaa」に設定されていることがわかります。InvalidAuthenticityTokenリクエストが正しかったので、リクエストが処理されるまでしばらく時間がかかると思います。

これはどのように可能ですか?

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

ruby-on-rails - ブラウザの外部から Rails サーバーへのリクエストにおける CSRF トークンの問題

ブラウザの外部からHTTPPOSTリクエストを行う必要がありますが、Rails バックエンドが認証を受け入れません (エラー 401)。そのような場合、CSRF トークンを渡す必要があることはわかっていますが、機能していません。

ブラウザーのフォームから要求を行うと、期待どおりに機能しますが、ブラウザーの外部から (たとえば、curl を使用して) 同一の要求 (ヘッダーと Cookie に関して) をシミュレートしようとすると、認証が失敗します。動作しません。

protect_from_forgery2 つの小さな変更により、ブラウザーなしで成功することができました。(1) CSRF を検証するoff をオフにするか、(2) リクエストGETの代わりにPOSTを使用します。どちらの場合も、Cookie を渡すだけで十分です。つまり、問題は間違いなく CSRF に関連しています。

それで、私の質問はPOST、ブラウザを使用せずにRailsサーバーへのCSRFで保護されたHTTPを作成するにはどうすればよいですか?

明確にするために、プロセスは次の 3 つのステップに分けられます。

  1. Login : セッションを識別するために Cookie を返します。

  2. New :GET後で使用する CSRF トークンを返すリクエスト (Cookie を使用)。

  3. Create :作成POSTしたい情報を送信するリクエスト (セッション Cookie と CSRF トークンの両方を使用)。

失敗する唯一のステップは 3 番目のステップです。

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

ruby-on-rails-3.1 - Rails CSFR保護:before_filterを書くのは正しいですか?

私のアプリケーションコントローラーは次のようになります。

check_csrfがないと、Railsは不正な応答についてサーバーコンソールに警告を書き込み、通常どおり実行を続行します。そのため、独自のcheck_csrfを作成する必要がありました。今では正常に動作します。それが正しいか?不正なリクエストの実行を停止する簡単な方法はありますか?

Railsバージョン:3.1。