SORU
2 HAZİRAN 2009, Salı


Anlayış Raylar Özgünlük Token

Birçok kez yaptığım gibi bazı konularda Özgünlük raylar Token ile ilgili çalışan, ben.

Ama gerçekten sadece gerçekten Özgünlük token anlamak istiyorum, bu sorunu çözmek ve gitmek istemiyorum. Yani benim soru, bu konu hakkında bir kaynak ya da detayları burada açıklamak için zaman harcamak istiyorsunuz?

CEVAP
15 EKİM 2009, PERŞEMBE


Ne olur

Kullanıcı görüş formu oluşturma, Güncelleme, ya da yok bir kaynak, Raylar app oluşturur rastgele authenticity_token, mağazalar bu token oturum ve yerler içinde gizli bir alan oluşturur. Kullanıcı formu gönderdiğinde, Raylar authenticity_token bir oturumda depolanan karşılaştırır, ve eğer isteği devam etmek için izin verilir bunlar aynı görünüyor.

Onu neden olur

Özgünlük token oturumda depolanır, çünkü müşteri değerini bilemez. Bu uygulamanın kendisi içinde form bakmadan Rails uygulaması için form gönderme engelleyecek. Hizmet kullandığınızı hayal edin, hizmete açmış ve her şey ok. Şimdi hizmet B kullanmak için gittiğini düşünsene, senin gibi bir resim gördün ve resmi daha büyük boyutta görüntülemek için düğmeye bastı. Şimdi, Eğer şeytani bir kod vardı servis B, belki bir istek göndermek için Bir servis (giriş), ve sormak sil hesap, gönderme isteği http://serviceA.com/close_account. Bu CSRF (Cross Site Request Forgery) olarak bilinir.

Eğer Bir hizmet özgünlük belirteçleri kullanıyorsanız, bu saldırı yöntemi, hizmet B isteği doğru özgünlük token içermemesi, ve devam etmek için izin verilmez beri artık geçerlidir.

API docs etiketi hakkında meta: ayrıntılar açıklanır

CSRF koruması protect_from_forgery yöntemi ile açıktır hangi eğer uymamış olsaydı zaten token denetler ve oturumu sıfırlar beklenen oldu. Bu yöntemi çağrısı yeni Raylar için oluşturulur varsayılan olarak uygulamaları. Belirteç parametresi authenticity_token varsayılan olarak adlandırılır. Adı ve Bu belirteç değer kılan her düzeni eklenmelidir HTML kafasına csrf_meta_tags ekleyerek oluşturur.

Notlar

Unutmayın, Raylar sadece doğrular değil idempotent yöntemleri (POST, PUT/PATCH ve SİL). İstek özgünlük token için kontrol edilmez. Neden? istekleri OLSUN HTTP belirtimi Birleşik Devletleri idempotent ve gerekir çünküdeğiloluşturmak, değiştirmek veya sunucu kaynakları yok, ve istek idempotent (eğer aynı komut birden çok kez çalıştırırsanız, aynı sonucu her zaman almalısınız) olmalıdır.

Dersleri

authenticity_token idempotent yöntemleri (POST, DÜZELTME ve SİLME/KOYUN) korumak için kullanın. Ayrıca emin olun herhangi bir istekleri ALMAK izin vermek için değil, sunucudaki kaynakları değiştirmek olabilir.


DÜZENLEME:the comment by @erturne ilgili kontrol istekleri idempotent olmak. Burada yaptıklarımdan daha iyi bir şekilde açıklıyor.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alan Fullmer

    Alan Fullmer

    3 EYLÜL 2010
  • CrazyMan

    CrazyMan

    14 Mayıs 2008
  • Damien Walters

    Damien Walte

    20 AĞUSTOS 2006