Rails uygulamanızın bir I-Frame'e yerleştirilmesine ve sorunlarla karşılaşılmasına nasıl izin verileceğini anlamaya çalışırken bu bağlantıyı bulan herkes için buraya güncellenmiş bir cevap eklemek istedim.
Bunu yazarken, 28 Mayıs 2020, X-Frame-Options değişiklikleri muhtemelen sorununuz için en iyi çözüm değil. "İZİN VER" seçeneği tüm büyük tarayıcılar tarafından tamamen yasaklanmıştır.
Modern çözüm, bir İçerik Güvenliği Politikası uygulamak ve bir 'frame_ancestors' politikası belirlemektir. "Frame_ancestors" anahtarı, uygulamanızı bir iframe olarak hangi alanların yerleştirebileceğini belirler. Şu anda büyük tarayıcılar tarafından desteklenmektedir ve X-Frame-Seçeneklerinizi geçersiz kılar. Bu, Clickjacking'i (X-Frame-Options'ın büyük ölçüde kullanımdan kaldırılmadan önce yardımcı olması amaçlanmıştır) önlemenize ve uygulamanızı modern bir ortamda kilitlemenize olanak tanır.
Bir başlatıcıda Rails 5.2 ile bir İçerik Güvenliği Politikası oluşturabilirsiniz (aşağıdaki örnek) ve Rails <5.2 için Güvenli Başlıklar mücevher gibi bir mücevher kullanabilirsiniz: https://github.com/github/secure_headers
Ayrıca isterseniz bir denetleyici / eylem temelinde politika spesifikasyonlarını geçersiz kılabilirsiniz.
İçerik Güvenliği Politikaları, gelişmiş güvenlik korumaları için mükemmeldir. Rails belgelerinde yapılandırabileceğiniz her şeye göz atın: https://edgeguides.rubyonrails.org/security.html
İçerik Güvenliği Politikası için bir Rails 5.2 örneği:
Rails.application.config.content_security_policy do |policy|
policy.frame_ancestors :self, 'some_website_that_embeds_your_app.com'
end
Bir politikada denetleyiciye özgü değişikliğe bir örnek:
class PostsController < ApplicationController
content_security_policy do |p|
p.frame_ancestors :self, 'some_other_website_that_can_embed_posts.com'
end
end