Wie schützen-Rest-API-Schlüssel für die Parsen in html-Anwendung
Ich habe gelernt mit Angular.js und verwendet Analysieren als back-end-Dienst. Um post-Daten zu Analysieren RESTful API, würde man REST-API-key und App-ID in den header der Anfrage wie dieser:
var config = {headers: {"X-Parse-REST-API-Key":"someapikey", "X-Parse-Application-Id":"someappid"}};
$http.post("https://api.parse.com/1/classes/myobject", obj, config).success (
function(data) {console.log(data);}
);
Dies ist zwar gut zum lernen, Frage ich mich, wie würde die Rest-API zum Parsen oder andere Backend-as-Service-Anbieter arbeiten in einem echten html-Anwendung. Den API-key und die Id der Anwendung ausgesetzt werden würde, die in JavaScript und jemand klug genug, Sie zu Ansicht-Quelle ändern könnte, Daten zu Ihrem Konto.
Nur so kann ich dieses Bild zu arbeiten, würde bedeuten, einen proxy-server fügt hinzu, dass Api-Schlüssel/App-Id-header. Dies würde jedoch die Niederlage der Zweck nicht mit zu laufen, Ihre eigenen back-end-server. Bin ich hier etwas fehlt?
- Was ist, wenn Sie es abrufen mit AJAX? Am Ende, alles auf einer Webseite zugänglich ist
- Ähnliche Frage von der Parse-Foren; parse.com/questions/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist, was Sie verpassen 🙂
Den Parse.com REST - /JavaScript-Schlüssel sind entworfen, um eine "out-in-the-wild." Mit diesen Tasten ist es nicht möglich zu bekommen, um Objekt-Zugriffs-Regeln oder beforeSave-Validierungen. Nur die master-Schlüssel können Sie dies tun. Schützen Sie den master-key. Eine nützliche Analogie ist die public-key-Verschlüsselung: Sie müssen teilen Sie Ihre öffentlichen Schlüssel aber schützen Sie den privaten Schlüssel.
Kann das jemand ändern Sie Ihre Daten? Ja, aber nur, wenn Sie lassen Sie Sie. Können Benutzer eine Abfrage von Daten anderer Nutzer? Ja, aber nur dann wieder, wenn Sie lassen Sie Sie. Parse hat ein paar Möglichkeiten, um sicherzustellen, Integrität und Sicherheit der Daten.
Die erste ist pro-Objekt-Berechtigungen. Verwenden Sie die Parse.com web-interface festzulegen, a) ob oder nicht-Klassen, die dynamisch erstellt wird und b) der CRUD-Berechtigungen für die vorhandenen Klassen. Eine der einfachsten Schritte, um die Sicherung einer app zu deaktivieren Berechtigungen-Klasse, die nicht explizit erforderlich. Zum Beispiel erstellte Objekte auf dem back-end, die nicht sein müssen, schreibbar (oder vielleicht lesbar) durch den Endbenutzer.
Die zweite ist die access control lists (ACLs). ACLs festgelegt werden, zu jedem Datensatz. Sie angeben, welche Benutzer oder Rollen können Lesen oder schreiben des Datensatzes. Datensätze ohne eine ACL sind öffentlich (jeder user es finden können). Wenn Sue ein Datensatz erstellt werden soll private zu Ihr, eine ACL als solche. Tom wird nicht in der Lage, es zu finden, ohne den master-key.
Die Dritte ist die Cloud Code. Sie sind in der Lage zu erzwingen " mission critical business Regeln und Daten-Validierungen mit beforeSave/afterSave-Funktionen. Bestimmen, was wirklich wichtig ist, und stellen Sie sicher, es ist überprüft, die in diesen Funktionen. Es ist auch eine gute Idee, setzen der ACL ausdrücklich in diesen Funktionen. ACLs können übergeben werden, wenn Sie das Objekt erstellen, aber es ist möglich für den Endbenutzer zu manipulieren, diese.
Hier ist die Zusammenfassung der Regel der Daumen für Sicherheit und Integrität.
Objekt-Berechtigungen sollten nur so offen wie nötig ist, um Ihre Anforderungen.
Jeden Datensatz sollte eine ACL, es sei denn, Sie sind sicher, dass es nicht sollte.
Meisten ACLs gesetzt werden sollten, mit vor/afterSave-Funktionen.
Alle Prüfungen, die muss durchgesetzt werden, sollte überprüft in vorher/afterSave-Funktionen.
Letzte Sache: es ist Zeitarbeit zu denken, der die gesamte Geschäftslogik, die als "wichtig" und bestehen auf die "vollkommene Integrität." Dies ist overkill für viele apps. Stellen Sie sicher, Sie haben genug server-side-Schutz in Ort, so dass ein Benutzer kann nie Schaden, um Sie oder zu anderen Benutzern. Es gibt nicht viel Sinn, sich Gedanken viel über diese (anderen als support-Kosten). Wenn jemand Experimentieren mit der app, aber verhindert wird, absichtlich oder unabsichtlich stören andere, vielleicht finden Sie eine ganz neue Art und Weise, es zu benutzen :).
Analysieren, bietet mehrere access-keys, die verwendet werden können, die über verschiedene APIs:
Beim Zugriff auf Analysieren von client-side javascript verwenden, sollten Sie die javascript-API mit der Javascript-Zugriff auf die Schlüssel.
In Bezug auf Sicherheit, werden Sie nicht in der Lage sein, zu verhindern, dass mit einem access-key, der verwendet wird, durch client-side javascript. Parse bietet eine leistungsfähige Zugriffskontrolle über ACLs an jedem Objekt, so dass Sie den lese - /Schreibzugriff auf jede Klasse, um die angegebenen Benutzer. Sie können auch verhindern, dass Kunden von der Erstellung von neuen Klassen in die Einstellungen der app. Werfen Sie einen Blick auf die security-guide hier.