Wir alle wissen, dass Meteor den miniMongo-Treiber anbietet, mit dem der Client nahtlos auf die persistente Schicht (MongoDB) zugreifen kann.
Wenn ein Client auf die persistente API zugreifen kann, wie sichert er seine Anwendung?
Welche Sicherheitsmechanismen bietet Meteor und in welchem Kontext sollten sie eingesetzt werden?
Antworten:
Wenn Sie eine App mit dem Befehl meteor erstellen, enthält die App standardmäßig die folgenden Pakete:
Zusammen ahmen diese den Effekt nach, dass jeder Client vollen Lese- / Schreibzugriff auf die Datenbank des Servers hat. Dies sind nützliche Prototyping-Tools (nur für Entwicklungszwecke), die jedoch normalerweise nicht für Produktionsanwendungen geeignet sind. Wenn Sie für die Produktionsfreigabe bereit sind, entfernen Sie einfach diese Pakete.
Um weitere hinzuzufügen, unterstützt Meteor Facebook / Twitter / und viel mehr Pakete für die Authentifizierung. Das coolste ist das Accounts-UI- Paket
quelle
meteor remove autopublish insecure
.access denied
Fehler auslösen . Hör zu.In den Sammlungen sagt doc :
quelle
Wenn Sie darüber sprechen, den Client daran zu hindern, keine Ihrer nicht autorisierten API zum Einfügen / Aktualisieren / Löschen zu verwenden, ist dies möglich.
Siehe ihre todo App unter https://github.com/meteor/meteor/tree/171816005fa2e263ba54d08d596e5b94dea47b0d/examples/todos
Außerdem haben sie jetzt ein integriertes AUTH-Modul hinzugefügt, mit dem Sie sich anmelden und registrieren können. Also ist es sicher. Soweit Sie sich um XSS, Valiations, Client-Header usw. kümmern.
Sie können die Meteor-App jedoch jeden Tag in eine voll funktionsfähige NodeJS-Anwendung konvertieren, indem Sie sie auf dem Node bereitstellen. Wenn Sie also wissen, wie eine NodeJS-Anwendung gesichert wird, sollten Sie in der Lage sein, Meteor zu sichern.
quelle
Ab 0.6.4 gehen im Entwicklungsmodus die Blöcke is_client und is_server immer noch beide an das Client-System. Ich kann nicht sagen, ob diese beim Ausschalten des Entwicklungsmodus getrennt sind.
Wenn dies nicht der Fall ist, kann ein Hacker möglicherweise Einblicke in das System gewinnen, indem er die Blöcke des if-Codes (Meteor.is_server) überprüft. Das betrifft mich besonders, insbesondere, weil ich festgestellt habe, dass ich Sammlungen zu diesem Zeitpunkt noch nicht in separate Dateien auf Client und Server trennen kann.
Aktualisieren
Nun, der Punkt ist, dass Sie keinen sicherheitsrelevanten Code in einen is_server-Block in einem Nicht-Server-Verzeichnis einfügen (dh - stellen Sie sicher, dass er sich in etwas unter / server befindet.
Ich wollte sehen, ob ich nur verrückt danach war, Client- und Server-Sammlungen in den Client- und Server-Verzeichnissen nicht zu trennen. Tatsächlich gibt es damit kein Problem.
Hier ist mein Test. Es ist ein einfaches Beispiel für das Publish / Subscribe-Modell, das anscheinend gut funktioniert. http://goo.gl/E1c56
quelle