2011-01-18 13 views
10

Kepçelerdeki XSRF saldırılarına karşı nasıl koruma sağlanır. Bu formların, kullanımı düşünülecek olan useToken kavramını desteklediğini görüyorum. Ancak, remoteForm veya diğer AJAX ile ilgili istek bu özelliği desteklemez.XSRF'den Grails'e karşı nasıl korunursunuz?

Ayrıca, herhangi bir durumda duruma göre etkinleştirmek yerine her zaman kullanılmasını sağlamak için useToken işlevini tersine çevirmenin bir yolu var mı?

+0

[HTTP Referer üstbilgisinin kontrol edilmesinin yeterli olmadığını] biliyorum (http://www.secureworks.com/research/blog/research/21009/), ancak daha iyi bir başlangıç ​​değil, özellikle de boş referers izin vermeyin. Ve bu bir filtre olarak eklemek oldukça kolaydır. – OverZealous

cevap

2

<g:form> etiketinin kaynak koduna bakmayı deneyebilirsiniz. Bir simge oluşturmak ve oturumda saklamak için SynchronizerToken kullanır. this issue çözünürlüğüne dayanarak, aynı sayfadaki tüm formlar için aynı belirteci kullanmak mümkün olmalıdır. Bunu denemedim, ancak teorik olarak sadece form üzerinde gizli bir alan oluşturup o alandaki belirteci oluşturmanız yeterlidir.

0

Bir önceki filtredeki istek nesnesine gizli bir değer enjekte ettik ve değeri belirli bir anahtarla şifreledik. Ardından, site üzerindeki her forma request.token değerini ekliyoruz ve bir POST aldığımızda, gizli alanın mevcut olduğunu ve değerinin aynı gizli anahtar tarafından çözülebildiğini doğrulamak için bir filtremiz daha var.

Eğer bu gizli değer mevcut değilse veya eskiyse - zaman damgası yük olarak kullanıyoruz - müşteriye bir hata durumu veriyoruz.

Bu, yukarıda açıklananlara alternatif bir yoldur ve bunu kullanıyoruz, çünkü sitemizdeki oturumları, dengesini daha kolay yüklemek için kullanmıyoruz.