Meteor'un hangi güvenlik mekanizmaları var? [kapalı]


92

Meteor'un müşterinin kalıcı katmana (MongoDB) sorunsuz bir şekilde erişmesine izin veren miniMongo sürücüsünü sunduğunu hepimiz biliyoruz.

Herhangi bir müşteri kalıcı API'ye erişebilirse, uygulaması nasıl güvenli hale getirilir?

Meteor'un sağladığı güvenlik mekanizmaları nelerdir ve hangi bağlamda kullanılmalıdır?


6
Bunun halihazırda ele alınmasını seviyorum, ancak bunu videoda gerçekten belirtmeleri gerekirdi. Bence onu izleyen herhangi bir web geliştiricisinin aklında bu soruyu 10 saniye içinde sona erecek ve bu kadar harika bir ürün için bariz güvenlik problemini tamamen görmezden geliyor gibi göründüklerinden rahatsızlık duyacaklar.
Naatan

6
Meteor 0.5.0 kullanıcı kimlik doğrulaması ekledi meteor.com/blog/2012/10/17/…
hipertracker

Yeniden açtırmak için bunu biraz yeniden ifade edebilirsiniz. Belki "Hangi güvenlik önlemlerini almalıyım?" veya "Hangi güvenlik seçenekleri mevcut?"
joeytwiddle

1
Fikir temelli mi? Wat? Açıkçası kanaat temelli olmadığı için bunun yeniden açılan bir denetim olduğunu düşünüyorum.
bjb568

Fikir temelli kararın bağlam dışı olduğuna katılıyorum - cevaplar gerçek gerçeklere dayanıyor.
Olivier Refalo

Yanıtlar:


64

Meteor komutunu kullanarak bir uygulama oluşturduğunuzda, uygulama varsayılan olarak aşağıdaki paketleri içerir:

  • AUTOPUBLISH
  • GÜVENSİZ

Bunlar birlikte, her istemcinin sunucunun veritabanına tam okuma / yazma erişimine sahip olma etkisini taklit eder. Bunlar yararlı prototip oluşturma araçlarıdır (yalnızca geliştirme amaçları), ancak genellikle üretim uygulamaları için uygun değildir. Üretim sürümüne hazır olduğunuzda, bu paketleri kaldırmanız yeterlidir.

Daha fazlasını eklemek için Meteor, kimlik doğrulamasını işlemek için Facebook / Twitter / ve Çok Daha Fazla paketini destekler ve en havalı olanı Hesaplar-UI paketidir.


2
Meteor 0.5 itibariyle doğru
Olivier Refalo

5
Varsayılan olarak güvensiz. Eyvah.
Judah Gabriel Himango

16
@JudahHimango yalnızca test amaçlı güvensizdir ve üretime hazır olduğunuzda bu iki paketi kaldırmak kadar kolaydır meteor remove autopublish insecure.
BenjaminRH

1
Meteor yöntemleri ne olacak? İstemci, sunucuda çalıştırıldıkları için güvenli olmayan kurulumlarda bile konsoldan erişebilir. Nasıl güvenli hale getirilebilir?
Matanya

2
@Matanya ama konsoldan gelenlerin kullanılması ve yürütülmesi üzerine bir access deniedhata atacaktır . Bunu kontrol et.
ajduke

35

Gelen koleksiyonları doc diyor ki:

Şu anda müşteriye koleksiyona tam yazma erişimi verilmektedir. İsteğe bağlı Mongo güncelleme komutlarını çalıştırabilirler. Kimlik doğrulamasını oluşturduktan sonra, istemcinin ekleme, güncelleme ve kaldırma için doğrudan erişimini sınırlandırabileceksiniz. Doğrulayıcıları ve diğer ORM benzeri işlevleri de düşünüyoruz.


1
Meteor geliştiricilerinden birinin cevabıyla Quora'daki
dentarg

1
@jonathanKingston bağlantı bozuk, lütfen günceller misiniz?
Carlos Barcelona

@CarlosBarcelona Alanın süresi doldu ve makale Meteor'daki güvenlik güncellemelerinden önceydi. Güncel olmadığını söylemek doğru olur; bu yüzden insanlara zaman kazandırmak için yorumu kaldırdım. Teşekkürler
jonathanKingston

5

İstemciyi yetkisiz ekleme / güncelleme / silme API'nizi kullanmamasını kısıtlamaktan bahsediyorsanız, bu mümkündür.

Https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos adresindeki todo uygulamasına bakın.

Ayrıca, şimdi oturum açmanıza ve kaydolmanıza izin veren yerleşik bir AUTH modülü eklediler. Yani güvenli. XSS, Doğrulamalar, istemci başlıkları vb. İle ilgilendiğiniz sürece.

ancak meteor uygulamasını her gün düğüme konuşlandırarak tam çalışan nodejs uygulamasına dönüştürebilirsiniz. Dolayısıyla, bir nodejs uygulamasını nasıl güvenli hale getireceğinizi biliyorsanız, meteoru güvence altına alabilmelisiniz.


1
Bu, Eylül 2012 itibariyle tamamen doğru
Olivier Refalo

2

0.6.4 itibariyle, geliştirme modu sırasında, is_client ve is_server bloklarının her ikisi de hala istemci sistemine gider. Geliştirme modunu kapattığınızda bunların ayrılıp ayrılmadığını söyleyemem.

Ancak, değilse, bir bilgisayar korsanı if (Meteor.is_server) kodunun bloklarını gözden geçirerek sistemden içgörü elde edebilir. Bu beni özellikle ilgilendiriyor, özellikle de bu noktada Koleksiyonları istemci ve sunucuda ayrı dosyalara ayıramadığımı belirttiğim için.

Güncelleme

Önemli olan, güvenlikle ilgili kodu sunucu olmayan bir dizindeki is_server bloğuna koymamaktır (yani, / server altında bir yerde olduğundan emin olun.

İstemci ve sunucu dizinlerinde istemci ve sunucu koleksiyonlarını ayıramama konusunda deli olup olmadığımı görmek istedim. Aslında bunda bir sorun yok.

İşte benim testim. İyi çalışıyor gibi görünen yayınlama / abone olma modelinin basit bir örneğidir. http://goo.gl/E1c56


1
Çözüm, kodunuzu sunucuya / klasöre kaydetmek olabilir - bu şekilde istemciye gönderilmez.
Olivier Refalo

DRM, lütfen bkz docs.meteor.com/#structuringyourapp - duyarlı kod istemci teslim edilecek gerekmez
emgee

Basit bir şey deneyin; bir sunucu dosyasında bir koleksiyon oluşturun, ardından istemci dosyasında aynı koleksiyonu oluşturun ve bana ne olduğunu söyleyin. Ardından, koleksiyonun bildirimini içeren bir kök dosya oluşturun, ardından buna bir sunucu ve istemci dizin dosyasında referans verin ve bana ne olduğunu söyleyin. Benim yapamadığım gibi koleksiyonu oluşturamazsanız, bunlara bağımsız olarak nasıl referans verebilirsiniz? Sonunda, aynı istemci mevcut dosyada var olmak için koleksiyonun referansına ihtiyacınız var ve is_server ve is_client kullanın. Umarım yanılıyorumdur, ama nasıl veya neden olduğunu henüz öğrenmedim.
DrM

Hmm, garip, test iyi görünüyor, cevabı güncelleyecek
DrM

Bağlantı basit kod için bir repodur, ancak iyi çalışıyor gibi görünüyor, geçmişte tuhaf hataların ne olduğundan veya bunları nasıl yeniden oluşturabileceğimden emin değil.
DrM
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.