Ich wollte hier nur eine aktualisierte Antwort für alle einfügen, die diesen Link finden, wenn sie herausfinden möchten, wie Ihre Rails-App in einen I-Frame eingebettet werden kann und Probleme auftreten.
Zum Zeitpunkt des Schreibens am 28. Mai 2020 sind die Änderungen der X-Frame-Optionen wahrscheinlich nicht die beste Lösung für Ihr Problem. Die Option "ALLOW-FROM" wurde von allen gängigen Browsern vollständig abgelehnt.
Die moderne Lösung besteht darin, eine Content-Security-Richtlinie zu implementieren und eine 'frame_ancestors'-Richtlinie festzulegen. Der Schlüssel 'frame_ancestors' gibt an, welche Domains Ihre App als Iframe einbetten können. Es wird derzeit von gängigen Browsern unterstützt und überschreibt Ihre X-Frame-Optionen. Auf diese Weise können Sie Clickjacking verhindern (bei dem die X-Frame-Optionen ursprünglich helfen sollten, bevor es weitgehend veraltet war) und Ihre App in einer modernen Umgebung sperren.
Sie können eine Inhaltssicherheitsrichtlinie mit Rails 5.2 in einem Initialisierer einrichten (Beispiel unten), und für Rails <5.2 können Sie einen Edelstein wie den Edelstein "Sichere Header" verwenden: https://github.com/github/secure_headers
Sie können die Richtlinienspezifikationen auch auf Controller- / Aktionsbasis überschreiben, wenn Sie möchten.
Inhaltssicherheitsrichtlinien eignen sich hervorragend für erweiterten Sicherheitsschutz. Überprüfen Sie alle Dinge, die Sie in den Rails-Dokumenten konfigurieren können: https://edgeguides.rubyonrails.org/security.html
Ein Rails 5.2-Beispiel für eine Content-Security-Policy:
# config/initializers/content_security_policy.rb
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
Ein Beispiel für eine Controller-spezifische Änderung einer Richtlinie:
# Override policy inline
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end