RailsアプリをI-Frameに埋め込んで問題が発生するのを許可する方法を見つけようとしたときに、このリンクを見つけた人のために、ここに更新された回答を含めたかっただけです。
これを書いている時点で、2020年5月28日、X-Frame-Optionsの変更は、おそらく問題に対する最善の解決策ではありません。「ALLOW-FROM」オプションは、すべての主要なブラウザで完全に禁止されています。
最新のソリューションは、Content-Security-Policyを実装し、「frame_ancestors」ポリシーを設定することです。'frame_ancestors'キーは、アプリをiframeとして埋め込むことができるドメインを指定します。現在、主要なブラウザでサポートされており、X-Frame-Optionsを上書きします。これにより、クリックジャッキング(X-Frame-Optionsが大幅に非推奨になる前に支援することを目的としていた)を防ぎ、最新の環境でアプリをロックダウンすることができます。
初期化子でRails5.2を使用してContent-Security-Policyを設定でき(以下の例)、Rails <5.2の場合は、Secure Headers gemのようなgemを使用できます:https://github.com/github/secure_headers
必要に応じて、コントローラー/アクションベースでポリシー仕様をオーバーライドすることもできます。
コンテンツ-セキュリティ-ポリシーは、高度なセキュリティ保護に最適です。Railsのドキュメントで構成できるすべてのものを確認してください:https://edgeguides.rubyonrails.org/security.html
Content-Security-PolicyのRails5.2の例:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
ポリシーに対するコントローラー固有の変更の例:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end