# Remote Access zur Datenbank oder einen eigenen Service?



## Halfbax (8. Dezember 2016)

Guten Tag,

ich frage mich gerade wie ich realtiv sicher auf eine Datenbank zugreife. Nun habe ich folgenden Thread auf Stackoverflow gelesen und bin erstaunt und gleichermaßen sehr überrascht.

http://stackoverflow.com/questions/9343385/safely-connect-to-mysql-database-in-c-sharp

Ich bin mir halt nicht mehr sicher, ob ich eine sichere Verbindung herrstellen kann, ohne das ich einen eigenen Service auf meinem Server implementiere. Muss ich das Rad neu erfinden? Wenn ja, was muss ich beachten bzw. wie sollte die Struktur aussehen?

Mit freundlichen Grüßen
Halfbax


----------



## Bratkartoffel (8. Dezember 2016)

Hi Halfbax,

das kommt drauf an, was du brauchst. Ich habe bisher aber generell mit einer REST-API gute Erfahrungen gemacht und somit meine Datenbank weg-gekapselt.

Grüsse,
BK


----------



## sheel (8. Dezember 2016)

Unabhängig von dem Verteilungsproblem der DB-Zugangsdaten:

Zwischen den Möglichkeiten "ein paar HTTP-Abfragen erlauben, die anhand der Parameter irgendwas aus der DB abfragen und zB. JSON-Daten zurückleifern" und "Socketverbindungen direkt in die DB erlauben" liegen Welten.
...

Außer der Sicherheit gibt es noch eine Menge anderer Gründe für Abstraktion.
Was sollen denn die ganzen schon verteilten Clients tun, wenn sich zB. die DB-Struktur leicht ändert?


----------



## Halfbax (9. Dezember 2016)

Eine REST-API hört sich interessant an und sollte nicht zu großen Problemen in der Implementierung führen . Aber ich frage mich demnach wie sicher sind dann die Nutzerdaten? Ich benötige eine Schnittstelle zum übertragen von Login-Credentials, sprich Login-Daten, und für das Setzen/Abfragen von Daten. Ich bin nicht zu 100% mit diesem System vertraut, aber ich glaube setzen von Daten ist nicht möglich. Bitte korrigiere mich, sofern ich falsch liege.

Folgendes Schema würde mir gefallen, sofern das auf dem richtigen Weg ist.

Login

```
Nutzer loggt sich ein -> Anfrage wird von einem Webserver ausgewertet und falls der Login erfolgreich ist wird ein Session-OAuth2-Key generiert
```

Abfrage

```
REST-API
```

Setzen

```
POST-Formular mit OAuth2 Implementierung
```
Mit freundlichen Grüßen
Leon


----------



## Bratkartoffel (12. Dezember 2016)

Hi,

ja, so kann man das machen. OAuth2 ist mMn zwar State-of-the-art, aber man muss fairerweise auch sagen, das OAuth2 schon ein ziemlicher Hammer ist (Verständnis, Implementierung, etc.). Für deinen Fall sicherlich wie Kannonen auf Spatzen.

In deinem Falle würde es sicherlich auch reichen, wenn du auf die Login-Anfrage einfach nur einen Cookie (SessionID) zurückgibst, welcher dann analog einer "normalen" PHP-Seite auch bei jeder Anfrage mitgeschickt wird.

Grüsse,
BK


----------



## zerix (18. Dezember 2016)

Hallo,

ich hätte noch so ein paar Punkte zur Sicherheit. Zugriffe auf die REST API sollten per HTTPS passieren und nicht nur per HTTP. Die Client Anwendung sollte nicht jedes Zertifikat (keine self-signed) erlauben, sondern wenn möglich sogar testen, ob es sich um das richtige Zertifikat handelt, hier das Stichwort Certificate Pinning. So wird sichergestellt, dass niemand Man in the Middle spielen kann. 

Viele Grüße
Sascha


----------



## Halfbax (13. Januar 2017)

Danke für die Antworten und entschuldigt mein spätes Antworten! Ich bin vor ein paar Tagen aus dem Urlaub zurück gekommen und wollte mich nun daran setzen. Ich sehe gerade eine REST API mit O2Auth Support ist anscheinend auf den ersten Blick nicht gerade einfach einzurichten. Obwohl es bereits fertige Scripts diesbezüglich gibt. Irre ich mich da?

Mit freundlichen Grüßen
Leon


----------

