Auf eigene Daten mit einer API zugreifen, ist das sicher?
Hallo,
folgendes Szenario: hab mit Dart eine kleine App entwickelt und möchte mit dieser App mittels einer API auf Daten zugreifen, die auf einer Datenbank liegen. Wenn ich aber nun die Daten mit JSON auf einer Website abbilde, dann kann da doch theoretisch jeder darauf zugreifen, oder? und ein API Key ist ja auch einfach ein durch Zufall generierter String, d.h. jeder der diesen String kennt, könnte auf die Daten zugreifen, oder? Kennt jemand bessere Möglichkeiten, damit kein anderer auf diese Daten gelangt?
Danke im Voraus.
Gruß
3 Antworten
Nicht irgendeinen String nehmen, sondern einen ganz langen string mit groß, klein Buchstaben, wie auch zahlen und Sonderzeichen. Wie ein Passwort. Dann ist das knacken schwerer. Ein Passwort Login, wie man es auf Websites hat läuft auch meist nur so und Websites generieren auch meist nur tokens, die man klauen kann. Du kannst natürlich IP Logging und abgleich und andere Dinge noch verbauen, wenn du es noch sicherer haben willst
Das kommt darauf an, was das für Daten sind. Du solltest über die API logischerweise nur die Daten senden, die der jeweilige Anfrager auch sehen darf. Daher arbeitet man normalerweise nicht mit einem globalen API Key, der für jeden Anfrager und jede Anfrage gleich ist, weil dann eben jeder mit diesem Schlüssel Zugriff auf alles hat.
Statt dessen wird mindestens für jeden Nutzer ein eigener API Key generiert, mit welchem er sich dann authentifiziert. Greift ein Nutzer dann auf Daten zu, die er nicht sehen darf, kann der Server die Anfrage entsprechend abweisen.
Noch besser ist die Verwendung von JWT Tokens, denen man u.a. ein Ablaufdatum zuweisen kann.
Was spricht dagegen bei selbst generierten Api Request den key an den Referer zu binden? Ist zwar jetzt nicht wirklich sicher, aber verhindert zumindest ein einfaches einbinden woanders.
Ansonsten halt Oauth und Co, wie alle anderen auch!