Ich erstelle tatsächlich meine erste App mit Meteor, insbesondere mit eckigen 2. Ich habe Erfahrung mit Angular 1 und 2, also darauf basierend. Ich habe ein paar Punkte zur Sorge ...Meteor - Wie sicher ist es?
Lassen Sie uns dieses Szenario vorstellen ... Meine Daten auf MongoDB gespeichert:
Collection: Kunden
{
name : "Happy client",
password : "Something non encrypted",
fullCrediCardNumber : "0000 0000 0000 0000"
}
nun auf meinem Meteor Client-Ordner, ich habe diese struncture ...
Sammlung clients.ts (Serverordner)
export var Clients = new Mongo.Collection('clients');
co mponent client.ts (nicht-Server-Ordner)
import {Clients} from '../collections/clients.ts';
class MyClients {
clients: Array<Object>;
constructor(zone: NgZone) {
this.clients = Clients.find();
}
}
..und zum Schluss: die HTML-Seite, es zu machen, sondern zeigt nur den Namen der Kunden:
<li *ngFor="#item of clients">
{{client.name}}
</li>
bisher Ok. aber meine Sorge ist: In Winkel 1 & 2 Anwendungen die Komponente oder Controller oder Richtlinie läuft auf der Client-Seite, nicht Server-Seite.
Ich setze mein HTML nur um den Namen des Clients anzuzeigen. aber da es ein HTML-Rendering ist, ist es wahrscheinlich mit etwas Geschick ziemlich einfach, etwas Code in den HTML-Render auf eckigen Code zu injizieren, um alle meine Felder anzuzeigen.
Oder könnte einfach zu der Konsole gehen und einige Befehle eingeben, um das gesamte Objekt aus der Datenbanksammlung anzuzeigen.
Meine Frage ist also: Wie sicher ist Meteor in diesem Sinne? Stimmen meine Bedenken? Kann Meteor meine Daten schützen, den Namen der Sammlungen schützen? Ich weiß, dass ich auf der find() angeben kann, um mir diese sensiblen Daten nicht zu bringen, aber da find() nicht auf der Server-Seite laufen könnte, könnte es leicht sein, es im laufenden Betrieb zu modifizieren, nein?
Wie auch immer ... Ich werde Erklärungen dafür schätzen, wie Meteor in diesem Sinne sicher (oder nicht) ist.
ty!
Dies ist ein großes Thema. Ich würde empfehlen, den Abschnitt [security] (http://guide.meteor.com/security.html) des Handbuchs zu lesen. –
Im Allgemeinen (sehr allgemein) sollten Sie keine Daten senden, auf die sie keinen Zugriff haben. Wenn sie bösartig sind, sehen sie nur Daten, die sie sehen dürfen. Ihr Client ist noch nie sicher, also trauen Sie ihm nicht, keine Daten verfügbar zu machen, Validierungen durchzuführen usw. – ste2425
Ja, aber bedenken Sie: Sie haben eine client.find() auf der Client-Seite laufen ... Ich kann setzen etwas wie client.find (nur die Felder, die ich wünsche) ... das ist ok ... aber da der Befehl find() auf der Clientseite ausgeführt wird, sieht es für jeden einfach aus, etwas wie client.find (alles, einschließlich sensitive) auszuführen data) - Es ist sehr einfach, direkte find() MongoDB-Befehle von der Clientseite aus auszuführen. Ich versuche herauszufinden, ob meine Theorie richtig ist oder nicht. –