Solo quería incluir una respuesta actualizada aquí para cualquiera que encuentre este enlace cuando intente averiguar cómo permitir que su aplicación Rails se incruste en un I-Frame y tenga problemas.
Al momento de escribir esto, el 28 de mayo de 2020, los cambios de X-Frame-Options probablemente no sean la mejor solución a su problema. La opción "PERMITIR DESDE" ha sido totalmente rechazada por los principales navegadores.
La solución moderna es implementar una política de seguridad de contenido y establecer una política de 'frame_ancestors'. La clave 'frame_ancestors' designa qué dominios pueden incrustar su aplicación como un iframe. Actualmente es compatible con los principales navegadores y anula sus X-Frame-Options. Esto le permitirá evitar el secuestro de clics (con el que originalmente se pretendía ayudar X-Frame-Options antes de que se volviera obsoleto) y bloquear su aplicación en un entorno moderno.
Puede configurar una política de seguridad de contenido con Rails 5.2 en un inicializador (ejemplo a continuación), y para Rails <5.2 puede usar una gema como la gema Secure Headers: https://github.com/github/secure_headers
También puede anular las especificaciones de la política en función del controlador / acción si lo desea.
Las políticas de seguridad de contenido son excelentes para las protecciones de seguridad avanzadas. Consulte todas las cosas que puede configurar en los documentos de Rails: https://edgeguides.rubyonrails.org/security.html
Un ejemplo de Rails 5.2 para una política de seguridad de contenido:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
Un ejemplo de un cambio específico del controlador en una política:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end