2Danke
ERLEDIGT
JA
JA
ANTWORTEN
9
9
ZUGRIFFE
270
270
EMPFEHLEN
-
25.10.11 17:10 #1
- Registriert seit
- Jul 2003
- Ort
- Gronau, Nordrhein-Westfalen, Germany, Germany
- Beiträge
- 634
Hallo alle miteinander!
Ich habe bislang immer viel mit MySQL gearbeitet, jedoch immer nur als "Ein-Benutzer-Vehikel" per PHP. Jetzt stehe ich vor einem Projekt das erfordert aus einer lokalen C++ Anwendung heraus Daten aus dem Web zu empfangen. Die Applikation soll ca alle 5 Sekunden auf den Inhalt zugreifen und Ihn auf Veränderungen prüfen. Die Applikation wird an durchaus 1000 und mehr Menschen verteilt die diese Informationen immer in nahezu Echtzeit empfangen sollen.
Ich habe mit bereits einige Modelle überlegt:
- Eine Website zwischenschalten und die Daten per HTTP empfangen
- Webservice (kommt leider Serverseitig nicht in Frage)
- Direktzugriff auf Online Datenbank (MySQL in diesem Fall)
Ich glaube am zuverlässigsten und schnellsten wäre wohl eine MySQL Datenbank, was mich dabei jedoch stört ist der Direktzugriff darauf. Daher nun meine Fragen:
Wie sicher ist das Benutzersystem der MySQL Datenbank? Kann ich einfach einen Benutzer anlegen welcher nur Lese (SELECT) Zugriff hat und alles ist ok? Gibt es da weitere Fallstricke zu beachten? Ich habe dabei immer im Hinterkopf das meine DLL mit dem Klartextpasswort gehackt werden kann!
Und falls sich jemand damit auskennt:
Wäre es gut für die Performance wenn ich Amazon AWS RDS nutzen würde?
Vielen Dank für eure Mühe im Vorraus!
Schönen Gruß,
JonathanGeändert von Operator_Jon (25.10.11 um 17:14 Uhr)
-
25.10.11 17:26 #2
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi,
alle Fragen kann ich dir nicht beantworten, aber ich gehe jetzt mal ein paar Sachen der Reihe nach durch:
Kommt darauf an, wie du den Service weiterverwenden willst. Willst du eine API bauen, die auch andere Programme dann verwenden können? Dann ja. Ansonsten würde ich dir davon abraten. Die Last zum Ausliefern der Daten steigt, und auch der Traffic erhöht sich merklich.Eine Website zwischenschalten und die Daten per HTTP empfangen
Prinzipiell sehr sicher, kommt natürlich darauf an, welche Rechte deine Benutzer bekommen, wie sicher das Passwort ist, ob SSL verwendet wird und so weiter.Wie sicher ist das Benutzersystem der MySQL Datenbank?
Ja, das geht. Wie genau, kann ich dir jetzt nicht mit einem SQL-Schnipsel zeigen, ich mach das immer per phpmyadminKann ich einfach einen Benutzer anlegen welcher nur Lese (SELECT) Zugriff hat[...]?
Du kannst sogar die Rechte so fein einstellen, dass du auf einzelne Tabellen oder Spalten die Rechte beschränkst.
Würde dafür sorgen, dass die Verbindung zur Datenbank per SSL verschlüsselt wird und du keine 0815-Passwörter auslieferst.Gibt es da weitere Fallstricke zu beachten?
Sorge dafür, dass jeder Benutzer sein eigenes Passwort für den Zugriff bekommt. Wenn du dein Projekt als DLL verteilst, dann kannst du ja noch eine Funktion hinzufügen, die die Zugangsdaten für den Server dann setzt. Somit kannst du dann nachträglich auch einzelne User aussperren oder erweiterte Rechte geben.[...]das meine DLL mit dem Klartextpasswort gehackt werden kann[...]
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
25.10.11 17:33 #3
- Registriert seit
- Jul 2003
- Ort
- Gronau, Nordrhein-Westfalen, Germany, Germany
- Beiträge
- 634
Hi Bratkartoffel,
vielen Dank für diese Antworten!
Eine API ist nicht geplant, die Software die auf diese Daten Zugriff hat ist von mir entwickelt und die Daten sollen für niemand anderen verfügbar sein außer meiner eigenen Software.
Ich ersehe aus deiner Antwort das ich scheinbar noch meine alte Denke angesetzt habe, nämlich ein einziges Passwort und einen einzigen Benutzer für den Zugriff zu nutzen. Ich bin garnicht auf die Idee gekommen, für jeden Benutzer einen Account in der DB selbst anzulegen, ich hatte daran gedacht den Benutzer per DB-Tabelle zu verifizieren
!
Das ist schonmal eine super Möglichkeit der ich weiter nachrecherchieren werde
. Ich wollte nur klären ob der Direktzugriff auf eine MySQL Datenbank in sich selbst erstmal Risiken birgt.
Danke nochmal, das hat mir schon sehr geholfen!
-
25.10.11 17:38 #4
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi,
nun ja, wenn dein Server bisher nur lokal erreichbar ist (sprich: 127.0.0.1 oder localhost, die Standardeinstellung in der my.cnf), dann musst du ihn hierfür auch auf der Netzwerkkarte hören lassen.
Hierbei könnte es natürlich sein, dass jemand über einen Exploit im MySQL-Server dann unberechtigt Zugriff darauf erlangt da er ja die komplette Verbindung und die Pakete selbst zusammen-zimmern kann.
Dies ist möglich, aber ich würd sagen ein eher marginales Sicherheitsproblem solange du den MySQL-Server aktuell hältst
Ich selbst hab zwei "offen" im Internet und bisher hats noch keine Probleme / Einbrüche gegeben.
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
25.10.11 17:40 #5
- Registriert seit
- Jul 2003
- Ort
- Gronau, Nordrhein-Westfalen, Germany, Germany
- Beiträge
- 634
Ok, Danke für deine Erfahrungen

Ich werde den Server ohnehin vermutlich bei Strato hosten lassen, ich vertraue denen mal das die alles aktuell halten und mir beim Thema Sicherheit etwas helfen
Danke nochmal, Thema erledigt
-
25.10.11 18:27 #6SE Tutorials.de Gastzugang
Als weitere Sicherung könnte man die Verbindung noch über SSL absichern und den Server so konfigurieren das dieser ein Client-Zertifikat verlangt ... in kombination mit DB-Accounts ein sehr sicheres System.
Das ganze läuft dann in dem Sinne dreifach ab :
1) Aufbau SSL-Verbindung : der Client fordert vom Server das Zertifikat an um eine SSL-Verbindung aufzubauen
2) Der Client versucht sich mit seinen User-Daten einzuloggen
3) Der Server prüft User-/Passwort-Kobination
4) Nur wenn diese Prüfung ok ist wird vom Server ein Zertifikat vom Client angefordert
5) Der Server prüft ob das Zertifikat zu diesem Account gehört *analog zu SSH mit Key-Files*
6) Server baut durch Client-Zertifikat gesicherte Verbindung auf , getunnelt durch SSL-Kanal vom Client zum Server ..
Eine sehr sichere Verbindungs-Art ... erfordert allerdings auch einiges an Overhead.
*Ich weis nicht ob der Verbindungsaufbau genau so stimmt ... aber ich bin der Meinung das im Zusammenhang mit OpenSSL mal so gelesen zu haben*
-
25.10.11 21:27 #7
- Registriert seit
- Jun 2007
- Ort
- Passau (Niederbayern)
- Beiträge
- 1.394
Hi,
ein Clientzertifikat würd ich jetz in die Kategorie "überflüssig" einordnen. Wenn du die Verbindung via Passwort absicherst, dann brauchst du das nicht extra. Quasi entweder das eine, oder das andere.
Gruß
BKÜber eine gute Bewertung freut sich jeder ;)
Bitte erledigte Threads als "Erledigt" markieren.
"Though a program be but three lines long, someday it will have to be maintained.''
-- Geoffrey James, "The Tao of Programming"
-
Hi
und was ist dann mit dem Mit-"hören" auf der Leitung und Abfangen der Zugangsdaten?
Zertifikat am Client sichert auch dagegen, Passwort nicht.
Das Ganze natürlich nur theoretisch.
Ob sich wer für die zu erwartenden Daten die Mühe macht...Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
"Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?
-
Diese Sicherungen sind bei MySQL eigentlich nur nötig, wenn man einen MySQL-Nutzer hat der von überall auf den MySQL-Dienst zugreifen darf. So ein Nutzer ist nicht zu empfehlen. Wenn man so etwas braucht, sollte man den Zugriff auf eine IP beschränken, nicht auf die ganze Welt. Selbst wenn dann jemand Zugangsdaten mitlesen könnte, käme er nicht auf den Server da er nicht die selbe IP hat. Eine Sicherung mit Zertifikaten ist imho nur in hochgesicherten Umgebungen notwendig, z.B. wo Personendaten gespeichert werden die nicht verbreitet werden dürften. Wenn deine Applikation also immer hinter einer festen IP steckt, dann belass es bei der IP-Beschränkung.
-
25.10.11 23:26 #10SE Tutorials.de Gastzugang
Und genau das wird vermutlich das Problem von TO sein : das sein Dienst eben von dyn-IPs abgefragt wird. Nich jeder verfügt über eine static-IP *DSL-Privatkunden schon garnicht* ... und auch mittelständische Unternehmen sind meist nur über dyn-IP angebunden. Größere Unternehmen , Uni's und alles was mit Glasfaser angebunden ist wird sicherlich einen vom Provider fest zugeteilten IP-Bereich haben ... aber IP-Sicherung ist in Zeiten wo IPv4-Adressen immer knapper werden und IPv6 erst im kommen ist noch nicht sicher genug. Auch lassen sich Ethernet-Pakete so fälschen das sie trotz anderer Quelle die benötigte IP aufweisen *und dabei rede ich jetzt nicht von Proxies* ... und das Ergebnis trotzdem an die maskierte IP weitergeleitet wird.
Alles in allem würde ich schon sagen das mindestens SSL verwendet werden sollte bei dem was TO vorhat.
Für User deren Daten aber höheren Schutz erfordern oder solche mit erhöten Rechten würde ich dann schon ein Client-Zertifikat verlangen. Oder das ganze über eine andere Schnittstelle realisieren.
Ähnliche Themen
-
Wie mache ich MySQL-Abfragen sicher?
Von ChrisEU im Forum PHPAntworten: 3Letzter Beitrag: 27.01.10, 22:22 -
Mysql sicher machen!
Von Nerlich im Forum PHPAntworten: 3Letzter Beitrag: 09.02.08, 15:25 -
Sicher mit MySQL arbeiten
Von FingerSkill im Forum PHPAntworten: 6Letzter Beitrag: 23.05.07, 16:48 -
PHP/MySQL - Wie sicher ist das wirklich
Von shutdown im Forum PHPAntworten: 3Letzter Beitrag: 14.08.04, 13:14 -
WIe sicher ist Mysql?
Von Subwoover im Forum PHPAntworten: 5Letzter Beitrag: 11.05.02, 15:37





Zitieren


Login





