Rails'de tam sayfa önbelleğe alma işlemi gerçekleştirmeye çalışıyorum ancak CSRF ile ilgili olarak büyük bir hayranlıkla karşılaştım - ya da belki de sadece benim anlayışımı. Şu anda JS'nin üstbilgi etiketlerine erişip yeniden yazabileceği bir çerezde saklanan form_authenticity_token
dizesine sahibim.4 özgünlük belirtecini raylar - hem üstbilgide hem de gizli girdi biçiminde?
benim oluşturulan HTML belirteçleri bulan iki yer vardır: Bir formun gizli giriş elemanı İç kafa
<meta name="csrf-token" content="[hash]">
2) ise
1)
<input type="hidden" name="authenticity_token" value="[different hash]">
Belirtildiği gibi, bu karmalar birbirinden farklıdır (önbelleğe alma işleminin mümkün olmadığı geliştirme modunda) ed). Neden farklılar? Neden kafa meta etiketlerini silip form girişini yalnız bırakabilirim ve isteke izin verilir? Yine de form giriş etiketini sildiğimde ve başlıkları bıraktığımda istek reddediliyor mu?
Etkili olarak bu, kafa etiketleri işe yaramaz anlamına geliyor, değil mi? Form giriş etiketini, başlık etiketleriyle yaptığım gibi, çerezimdeki değere yeniden yazabilirim, ancak birbirlerinden farklı olduklarından, özellikle tam sayfa önbellekleme söz konusu olduğunda, sonuçların ne anlama gelebileceğine dair ihtiyatlıyım. .
Uygulama Denetleyici içerir:
protect_from_forgery with: :exception
before_filter :csrf_cookie
def csrf_cookie
cookies['authenticity-token'.freeze] = {
value: form_authenticity_token,
expires: 1.day.from_now,
secure: (Rails.env.staging? || Rails.env.production?)
}
end