問題タブ [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.
ruby-on-rails - Rails の protect_from_forgery は本当に便利ですか?
これを質問しているのは、ajax や flash を使用して Rails と通信し始めると、生活が非常に複雑になると感じているからです。
CSRF から保護するのが良いことはわかっていますが、代わりにリファラーなどをチェックすることはできませんか?
ruby-on-rails - Railsリクエストフォージェリ保護設定
Railsの初心者を助けてください:)クラスprotect_from_forgery
に属性のない呼び出し(デフォルトで指定)があります。ApplicationController
基本的にコードは次のとおりです。
私がすべきだと思うのは、正しいのない POST リクエストを防ぐ必要があるということですauthenticity_token
。しかし、以下のような jQuery でポスト リクエストを送信すると、正常に動作します (データベースで実行される update ステートメントがあります)。
送信されたパラメーターの中にないことがコンソールに表示さauthenticity_token
れますが、リクエストは引き続き有効と見なされます。何故ですか?
UPD config/environments/development.rb で構成設定が見つかりました
DEV 環境とローカル リクエストにより、これらの jQuery ポスト リクエストは問題ありませんでした。
php - Rails3のprotect_from_forgeryの問題
HTTPを介して相互に通信する必要がある2つのアプリケーションがあります。1つはPHPアプリで、もう1つは私のメインアプリであるRailsアプリです。PHPアプリにデータをPOSTしてRailsアプリと通信する必要がありますが、そうすると、InvalidAuthenticityTokenエラーが発生します。とにかくこれの周りにありますか?または、Railsアプリが認証されるように、POSTを渡すための独自のトークンを作成するにはどうすればよいですか?
ruby-on-rails - Rails 3、protect_from_forgery、および IE8 の問題
すべてのブラウザー (Safari、Firefox、IE6、7、8 など) で問題なく動作する Rails アプリがあります。
かなりロックダウンされたバージョンの IE8 を使用している新しいユーザーがいて、アプリにアクセスしようとするとすぐに、ログイン ページに到達する前に、Windows 認証プロンプトが表示されます。提供されたログインの詳細を入力しようとすると、失敗します。認証プロンプトが表示されないはずなので、失敗することはあまり心配していません。
ApplicationController から protect_from_forgery を削除するとすぐに、彼らはシステムに正常にアクセスできます。
Cookie などを許可することを提案しようとしましたが、まだ問題が発生しています。私たちが見ることができる他のものについて誰か提案がありますか
これに追加するだけです。このサイトは、ベースキャンプ スタイルのサブドメイン システムを使用しています。それが問題かどうかは定かではありません。
ruby-on-rails - protect_from_forgery は PUT/DELETE リクエストを保護しません
でデモ アプリケーションをrails new demo
作成し、 でスキャフォールディングされたユーザー コントローラーを生成しましたrails generate scaffold User name:string email:string
。スキャフォールディングされたコードにはApplicationController
withprotect_from_forgery
があり、 UserController
which から派生したものもありますApplicationController
。
webrick を実行し、ユーザーを追加します。Authenticity トークンは、/users の POST で約束どおりに機能します。
まだRails 3.0.5を使用しているため、次のことができます。
そして、トークンを与えずにユーザー 3 を変更します。
また、DELETE でも同じことができます。
それは私に与えます:
それらのリクエストと一緒にトークンを送信しないのに、なぜこれらのことができるのか説明していただけますか?
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コマンドは機能しますが...
ruby-on-rails - デプロイ後の無効な認証トークン
Rails アプリの新しいバージョンをデプロイするたびに、以前のリリースの認証トークンが無効になります。それが正常な動作です。私はそれを変えようとはしていません。
ただし、最後のバージョンでまだページを開いているユーザーが投稿リクエストを実行しようとすると、無効なトークン エラーが発生します。
このエラーが発生しないようにするにはどうすればよいですか?
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
リクエストが正しかったので、リクエストが処理されるまでしばらく時間がかかると思います。
これはどのように可能ですか?
ruby-on-rails - ブラウザの外部から Rails サーバーへのリクエストにおける CSRF トークンの問題
ブラウザの外部からHTTPPOST
リクエストを行う必要がありますが、Rails バックエンドが認証を受け入れません (エラー 401)。そのような場合、CSRF トークンを渡す必要があることはわかっていますが、機能していません。
ブラウザーのフォームから要求を行うと、期待どおりに機能しますが、ブラウザーの外部から (たとえば、curl を使用して) 同一の要求 (ヘッダーと Cookie に関して) をシミュレートしようとすると、認証が失敗します。動作しません。
protect_from_forgery
2 つの小さな変更により、ブラウザーなしで成功することができました。(1) CSRF を検証するoff をオフにするか、(2) リクエストGET
の代わりにPOST
を使用します。どちらの場合も、Cookie を渡すだけで十分です。つまり、問題は間違いなく CSRF に関連しています。
それで、私の質問はPOST
、ブラウザを使用せずにRailsサーバーへのCSRFで保護されたHTTPを作成するにはどうすればよいですか?
明確にするために、プロセスは次の 3 つのステップに分けられます。
Login : セッションを識別するために Cookie を返します。
New :
GET
後で使用する CSRF トークンを返すリクエスト (Cookie を使用)。Create :作成
POST
したい情報を送信するリクエスト (セッション Cookie と CSRF トークンの両方を使用)。
失敗する唯一のステップは 3 番目のステップです。
ruby-on-rails-3.1 - Rails CSFR保護:before_filterを書くのは正しいですか?
私のアプリケーションコントローラーは次のようになります。
check_csrfがないと、Railsは不正な応答についてサーバーコンソールに警告を書き込み、通常どおり実行を続行します。そのため、独自のcheck_csrfを作成する必要がありました。今では正常に動作します。それが正しいか?不正なリクエストの実行を停止する簡単な方法はありますか?
Railsバージョン:3.1。