CouchDB yetkisiz yazışmaları önlemek için bir mekanizmaya sahiptir.CouchDB - izinsiz okunmaları engelle
Ayrıca yetkisiz okumaları engelleyebilir mi?
CouchDB yetkisiz yazışmaları önlemek için bir mekanizmaya sahiptir.CouchDB - izinsiz okunmaları engelle
Ayrıca yetkisiz okumaları engelleyebilir mi?
Evet, CouchDB yetkisiz okumaları önleyebilir. Ne yazık ki, biraz daha basittir.
Bir gizli açık artırma uygulaması düşünün. 20 dolar teklif edersiniz ve 10 dolar teklif ederim; her bir teklif bir kanepe belgesinde. Kanepe, kendi teklif belgelerini okumamıza izin verir, ancak başkaları yoktur. Ancak,, ortalamayı gösteren bir harita azaltma görünümü var. Görünümü yüklüyorum ve ortalamanın 15 ABD doları olduğunu görüyorum. Bu nedenle, teklifinizin 20 TL olduğunu ve güvenlik politikasını ihlal ettiğimi söylüyorum. Görünüm çıkışı, bir belgenin bazı bilgilerinden veya bir kısmından sızabilir. Belge düzeyinde güvenliği sağlamak mümkün değildir. Bu yüzden okuma erişimi veritabanı düzeyinde.
Biliyorum, bu berbat. Ama bu tek doğru, ölçeklenebilir cevaptır.
Bu, Couch felsefesinin, kullanıcı başına bir (veya daha fazla!) Çok sayıda — veritabanı oluşturması nedenidir. Bir veritabanına okuma izni, _security
nesnesinin readers
değerinde ayarlanır. (O da DB yazabilirsiniz kim belirttiği için CouchDB bagaja, alan readers was renamed to members unutmayın.)
tekniği şu şekilde çalışır:
_security
nesnesine ekleyin.validate_doc_update
ile paylaşılabilir.)?filter=my_filter_function
ile çoğaltın.Elbette, bu kullanıcıların doğrudan Couch'a eriştiği, saf bir Couch uygulaması içindir. Orta katmanınız varsa (MVC denetleyicisi veya yalnızca bir ters HTTP proxy'si), o zaman kullanıcı ile kanepe arasında buradaki ilkeyi uygulayabilirsiniz. Ancak dikkatli olun. Örneğin, _show
işlevi veya _rewrite
kuralı, bir kullanıcının politikanıza rağmen bir görünüm veya belge yüklemesine izin verebilir.
İyi şanslar!
Teşekkürler! _Show ve _rewrite'in beni nasıl ısırdığını anlatabilir misin? Ayrıca, "biriyle arkadaş olma -> fotoğraf yükle" gibi yarış koşullarından nasıl kaçınacağım ve arkadaşının o fotoğrafı hiç göremediğinden% 100 emin olabilir miyim? – nornagon
Eh, URL'ye göre kullanıcı başına belge başına erişim izni veren/reddeden bir ters proxy uygulamanız olduğunu varsayalım. Daha sonra, bir _list işlevini kullanarak yeni bir özellik eklersiniz ve tüm _list sorgularına proxy tarafından izin verilir. Bir kullanıcı, yapmaması gereken belgeleri görmek için _list'in nasıl kullanılacağını anlayabilir. Benzer şekilde, bir _rewrite kuralı normal '/ db/doc_id' yolu olmayan belgeleri görmenin bir yolunu sağlayabilir. Öyleyse, vekilinizin deliksiz olduğundan emin olmalısınız. – JasonSmith
İkinci soru, ** okuma ** okuma ** erişim ** okuma ** hakkında daha fazla bilgi. Yeni bir soru sormanızı öneriyorum ("CouchDB güvenlik modelinde okuma erişimini iptal etme"). Yapabilirsem cevap vereceğim! Her kullanıcı için bir veritabanı oluşturma – JasonSmith