Wie viel sicherer ist die Rest API wenn sie von client zu server arbeitet

DreamGamer

Lieutenant
Registriert
Feb. 2017
Beiträge
543
Hallo, ich bin aktuell in React Native(Javascript) eine App am Programmieren und nutze dafür Firebase als Datengrab. Es gibt bei Firebase die Möglichkeit wie im Browser auch die Rest API zu nutzen. Von Server zu Server habe ich diese auch bisher immer genutzt, da es ja um einiges sicherer ist, nur wäre meine Frage wie es von Client zu Server aussieht. Wäre es trotzdem noch viel sicherer als das Framework von Firebase für React Native? Also könnte ich auch bedenkenlos mit React Native Firebase arbeiten oder sollte ich auch dort mit der Rest API arbeiten? Gäbe es dort deutlich mehr Sicherheitslücken?

MFG DreamGamer
 
Warum ist von Server zu Server sicherer? Ist die API trotzdem von draußen zu erreichen? Wenn ja, was ist daran dann sicherer?
 
@GrinderFX Von Server zu Server, da man dort nur die Verbindung bzw. das Zertifikat von dem jeweiligen Server zulassen kann und bei Clients muss man ja alles zulassen bzw. alle die, die den Key haben.
 
DreamGamer schrieb:
@GrinderFX Von Server zu Server, da man dort nur die Verbindung bzw. das Zertifikat von dem jeweiligen Server zulassen kann und bei Clients muss man ja alles zulassen bzw. alle die, die den Key haben.

Nicht wenn du eine OAuth Anmeldung oder ähnliches hast.
 
Was ist denn für dich DIE Rest API?
Wie du deine Rest API absicherst, ist doch vollkommen dir überlassen.
Wenn du meinst jeder soll alles lesen können, dann gut, wenn du meinst du willst eine hohe Absicherung und sicherst deine Rest API mit einem OAuth2 Server ab, dann ist das immer noch deine Entscheidung.
 
@DreamGamer REST ist einfach ein Stil eine Schnittstelle (API) zu gestalten. Das hat mit Sicherheit nichts zu tun.
Was du suchst ist Verschlüsselung und Authentifizierung.
 
Mir wirkt so, als würde hier so massives Wissen fehlen, dass es nicht möglich ist, dies in wenigen Minuten im Forum zu klären...
Hier wirst du dich wohl erst mal einlesen müssen, was überhaupt eine API ist, was Rest ist, was OAuth ist und wie das ganze mit deinem anderen Framework zusammen arbeitet.
 
  • Gefällt mir
Reaktionen: Madman1209
DreamGamer schrieb:
Von Server zu Server, da man dort nur die Verbindung bzw. das Zertifikat von dem jeweiligen Server zulassen kann und bei Clients muss man ja alles zulassen bzw. alle die, die den Key haben.
Und warum kann der Server nicht übernommen werden, womit dieser dann "böse Abfragen" durchführt? Wenn du einem Server traust, aber nicht einem Client, ist eher dein Ansatz von "Sicherheit" falsch.
 
  • Gefällt mir
Reaktionen: Madman1209
@KitKat::new() Dann ist glaube ich die Frage etwas dumm gestellt von mir. Die Verschlüsselung sowie Authentifizierung übernimmt in meinem fall der komplette Firebase Service. Ich habe halt einmal einen Kurs für JWT besucht und dort wurde gesagt, das Rest, der beste weg wäre, da man dies sicherer gestalten könnte. Seitdem nutze ich nur noch Rest aber jetzt bin ich an den Grenzen, also man kann spezielle Sachen nur ohne Rest verwirklichen und deshalb frage ich mich, ob das Framework genauso sicher wäre? An sich müsste es ja mit denselben Verschlüsselungen arbeiten, oder nicht? Also bestände logisch gesehen dort keine anderen Sicherheitslücken als bei der Rest API vom selben Service?

@GrinderFX Ja das stimmt tatsächlich, ich bin erst seit einem Jahr dabei die Sprache sowie React Native und Datenübermittlung zu lernen. Damit möchte ich mich auch noch mehr befassen nur brauche ich aktuell einen weg diese Daten über Firebase zu übermitteln und deshalb die Frage wie oben anders beschrieben :=)
Ergänzung ()

@Yuuri Irgendwie merke ich gerade selbst beim Schreiben dieser Nachricht, hm irgendwie man das Wirklich nicht soviel Sinn. Wenn ich sage, ich habe einen Webserver dort ist eine Rest API drauf und er soll nur Verbindungen zulassen, die vom selben Server kommt ist es ja etwas dumm, da ja jeder die Webseite bearbeiten könnte und das Script per Javascript dort hinschicken könnte, oder?
 
Ganz wichtiger Unterschied, auf deinem Server entscheidest du welche Anfragen gemacht werden an Firebase. Der Client kann machen was er will, und du musst damit rechnen das ein Client auch böswillige Anfragen machen könnte.

Was man in Firebase machen darf wird durch die jeweiligen Credentials bestimmt (ich hab das selbst noch nicht benutzt, meine Erklärungen hier sind daher etwas allgemein). Wenn dein Server mit Firebase redet, kannst du vorher noch dein eigenes Rechtesystem bauen und entscheiden welche Anfragen erlaubt sind oder nicht. Wenn der Client Firebase Credentials hat, dann darf er alle Anfragen machen die diese Credentials erlauben.

Mein Verständnis von Firebase ist das man da JWTs an die Clients geben kann die dann auch sehr fein Rechte für bestimmte Nutzer vergeben. Die Rechteverwaltung kann also komplett in Firebase passieren, was auch die einzige sichere Variante ist wenn man Clients direkt mit Firebase reden lässt.

Das Firebase SDK wird auch nur mit der REST API reden (oder evtl. was andres wie gRPC, das macht aber für diese Frage keinen Unterschied). Ob das sicherer ist oder nicht hängt alleine von den Entscheidungen die das SDK trifft ab. Es wäre möglich das man direkt mit der REST API einfach mehr Kontrolle hat, ansonsten ist ein SDK aber nicht grundsätzlich unsicherer als direkt mit einer REST API zu reden.
 
  • Gefällt mir
Reaktionen: DreamGamer
@Dalek Danke für deine Antwort die war echt sehr Informativ :=) Genau so wie du es beschrieben hast macht es Firebase und somit ich ja auch, also nur Nutzer, die in einer spezielle Tabelle stehen, dürfen auf bestimmte Sachen oder nur auf die eigenen sachen Zugreifen. Und wahrscheinlich meinte der Kurz-Leiter damals das was du auch sagst, also das man wahrscheinlich mehr Kontrolle über die Rest API hat.

Ich erinnere mich gerade grob daran was die Erklärung war glaube ich, er sagte meine ich es wird über Rest nur eine Verbindung, zu den Google Servern aufgebaut, die alles kontrollieren und die SDK baut eine direkte Verbindung zur Datenbank auf aber eig. kann das doch gar nicht sein, oder? Also sonst würde sich ja Google selbst ein Bein stellen?
 
Ich kenne (ok, "kenne" ist übertrieben) das von meinen Fingerübungen so:
  • ich logge mich mit meinem Angular-Client auf meinem Applikationsserver ein. Erhalte ein Token. Das Token schleuse ich in alle künftigen Rest-Anfragen in den Header mit ein.
  • die Server-Applikation (bei mir dotnet core) weist Anfragen ohne das Token von vornherein ab. Pro Web-Service prüfe ich ggf. die Credentials ("darf der das denn")
  • der Web-Service fragt ggf. die Datenbank ab, liefert Ergebnisse zurück an den Client
 
Zurück
Oben