Volevo solo includere una risposta aggiornata qui per chiunque trovi questo collegamento quando cerca di capire come consentire alla tua app Rails di essere incorporata in un I-Frame e incorrere in problemi.
Al momento della stesura di questo, 28 maggio 2020, le modifiche alle opzioni X-Frame probabilmente non sono la soluzione migliore al tuo problema. L'opzione "ALLOW-FROM" è stata totalmente disabilitata da tutti i principali browser.
La soluzione moderna consiste nell'implementare una politica di sicurezza dei contenuti e impostare una politica "frame_ancestors". La chiave "frame_ancestors" indica quali domini possono incorporare la tua app come iframe. È attualmente supportato dai principali browser e sovrascrive le opzioni X-Frame. Ciò ti consentirà di prevenire il clickjacking (che X-Frame-Options era originariamente previsto per aiutare prima che diventasse in gran parte deprecato) e di bloccare la tua app in un ambiente moderno.
Puoi impostare una Content-Security-Policy con Rails 5.2 in un inizializzatore (esempio sotto) e per Rails <5.2 puoi usare un gem come Secure Headers gem: https://github.com/github/secure_headers
Se lo desideri, puoi anche sovrascrivere le specifiche dei criteri in base al controller / azione.
I criteri di sicurezza dei contenuti sono ottimi per protezioni di sicurezza avanzate. Controlla tutte le cose che puoi configurare nella documentazione di Rails: https://edgeguides.rubyonrails.org/security.html
Un esempio di Rails 5.2 per una Content-Security-Policy:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
Un esempio di una modifica specifica del controller a una politica:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end