Rails uygulamasıyla konuşmak için REST ve OAuth kullanıyorum (bir iPhone uygulamasından ancak bu uygun olmamalıdır). Ancak, Rails'in CSRF korumasıyla (protects_from_forgery
aracılığıyla) bazı sorunlara gidiyorum.Raylar, OAuth ve CSRF koruması
CSRF korumasının yalnızca düzenli form gönderimleri için (yani Content-Type = application/x-www-form-urlencoded) başladığı için, JSON veya XML verilerini gönderiyor olsaydım iyi olur. Ne yazık ki, OAuth şu anda uygulama/x-www-form-urlencoded istekleri ile sınırlıdır. draft spec that extends OAuth to non-form-urlencoded data var, ama şu an bana yardımcı olmuyor.
Bana kalırsa, şu seçenekler vardır: o OAuth imza bölümü ve böylece tabi olmayacağını bilerek
JSON olarak veri gönderme adam-in-the- orta saldırılar. Açıkça çekici bir çözüm değil. Normal eylemlere (örneğin,
UsersController#update
) dahili olarak atanan özel Raylar eylemleri (ör.UsersController#update_oauth
) oluşturun (UsersController#update_oauth
). Daha sonra bunları sahtecilik korumasından hariç tutun (protects_from_forgery :only => [:update]
). Bu işe yarayacak ve bir ya da iki eylem için kabul edilebilir bir sınır olabilir, ama açıkçası çok karmaşık bir çözüm olacaktır.geçersiz kıl OAuth istekleri görmezden Raylar CSRF koruması. Bunu denemedim, ancak OAuth isteklerini başarılı olarak değerlendirmek için kancalardan birini (belki de
verify_authenticity_token
filtresini) değiştirmek mümkün gibi görünüyor.
Daha önce buna rastlayan var mı? Herhangi bir tavsiye? Yoksa belki temel bir şey eksik miyim?