Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

1

05.02.2015, 00:24

Datenbankverbindung Sicherung

Hallo, ich frage mich folgendes:
Wenn ich eine MySQL Datenbank auf einem entsprechenden Server habe, kann ich ja theoretisch von einem Client direkt eine Verbindung herstellen (mit IP, name und passwort).
Das Problem ist, wenn das Passwort im Programm liegt kann es extrahiert werden (dekompilieren o.ä.). Also kann im Prinzip jeder dann sie verändern, wenn er weiß wie. Die Daten an sich sind öffentlich und nicht vertraulich, aber von jedem sollen sie nicht geändert werden.

Wie löse ich das Problem? Ich dachte mir über php-Scripts, die den Zugriff machen (das Passwort kriegt dann ja keiner), aber wenn man weiß wie die Scripts heißen und ihre Parameter kennt...

Zum Kontext:
Es ist eine Terminverteilung, d.h. einer/mehrere "Admins" mit einer Software können Termine festlegen. Dann gibt es eine Android App über die man alle Termine sehen kann.
Also die Termine sind nicht vertraulich aber es soll auch nicht jeder sie ändern können.

Vielleicht kann mir jemand helfen.

mfg

Flooy

Frischling

Beiträge: 29

Wohnort: NRW, Essen

  • Private Nachricht senden

2

05.02.2015, 00:59

Zur PHP-Variante:
Leg doch eine weitere Tabelle an für "Admin"-Accounts, dort kannst du dann alle eintragen die berechtigt sind etwas zu verändern, und im PHP Script legst du dann fest das man wenn man etwas Verändern will auch Username & Password an das PHP Script übergeben muss, wenn diese korrekt sind führt dieses Script dann erst die gewünschten MySQL Befehle aus etc ^^
(Alternativ dazu kannst du auch einfach im PHP Script selbst ein Master Username/Password angeben, das übergeben werden muss zum ändern von Datensätzen)

Sonstiges:
Habe mich zwar nie damit auseinander gesetzt, aber ich meine gehört zu haben... ( Habe eig. wenig mit MySQL am Hut :S )
Das man einfach einen weiteren Account für den Zugriff auf den MySQL Server anlegen kann,
der nur Berechtigung für das Auslesen von Datensätzen hat, so wäre es un-relevant wenn jemand von diesen Usernamen/Password herausbekommt,
da er nicht mehr damit anfangen kann als die APP selbst, nämlich das anzeigen der Datensätze ^^
Desweiteren könntest du in der APP dann die Möglichkeit geben, das der User eigene Logindaten für den MySQL Server angeben kann, damit die,die berechtigt sind, auch über die APP die Datensätze ändern können. So könntest du die Admin-Accounts direct über den normalen MySQL-Login regeln.

(Glaube ich versuche morgen, wenn ich ausgeschlafen bin, es deutlicher zu formulieren, wenn der bedarf deiner/eurer seits besteht. Grade etwas Müde :rolleyes: )
Ich bin zu Un-kreativ für eine gute Signatur :wacko:

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

3

05.02.2015, 01:14

Also der Zugriff erfolgt definitiv über Client-Software.
Ich denke das mit dem Admin-Account ist am besten, oder?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

05.02.2015, 01:20

Wieso ist die Datenbank überhaupt von außen erreichbar und nicht nur lokal auf dem Server?

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

5

05.02.2015, 01:46

Ist sie nicht.
Der Admin muss allerdings über ein Script die Datenbank verändern (bzw. updaten, wie das dort heißt).
Ein Außenstehender der Kenntnis über den Namen und die Parameter hat, kann problemlos Änderungen vornehmen.

Daher find ich den Vorschlag mit der Authentifizierung gut.
Da ich sicher sein kann, dass das Admin-Programm nicht in falsche Hände gerät, kann ich die Zugangsdaten ja direkt einprogrammieren, oder?

Toemsel

Treue Seele

Beiträge: 310

Wohnort: OÖ

Beruf: Student und Programmierer

  • Private Nachricht senden

6

05.02.2015, 02:26

Zitat

Da ich sicher sein kann, dass das Admin-Programm nicht in falsche Hände gerät, kann ich die Zugangsdaten ja direkt einprogrammieren, oder?
Würde ich so nicht machen. Wenn ich die Software dekompiliere kann ich somit wieder alle Daten auf der Datenbank abändern.


Du schickst die Befehle an ein Script (oder Service) am Server. Dieser verarbeitet diese und schickt dir das Resultset zurück.
Entweder Authentifizierst du dich beim ersten mal (Praktisch ein Login) und der Server merkt sich die Session. Oder bei jeder Request schickst du deine Authentifizierung mit.
Die Authentifizierungsdaten für die Anfragen müssen beim Client eingegeben werden. (Username + Passwort)
Nach einer einmaligen Eingabe + erfolgreichen verbindens mit dem Server (Skript) kannst du diese Daten ja in einer Datei (verschlüsselt/Hash) speichern.

birdfreeyahoo

Alter Hase

  • »birdfreeyahoo« ist der Autor dieses Themas

Beiträge: 756

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

7

05.02.2015, 03:10

Würde ich so nicht machen. Wenn ich die Software dekompiliere kann ich somit wieder alle Daten auf der Datenbank abändern.


Da sie aber niemand bekommt, der das nicht darf, ist da doch kein Problem, oder?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

05.02.2015, 06:39

Da sie aber niemand bekommt, der das nicht darf, ist da doch kein Problem, oder?
Wozu dann überhaupt Sorgen machen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

05.02.2015, 10:11

Alternativ kann natürlich das PHP-Skript auch einen Namen haben, den man nicht raten kann. Wenn der Server dann nicht Verzeichnisinhalte anzeigt und die Verbindung noch idealerweise mit SSL gesichert ist (was ja jetzt nicht soo schwer ist) sollte die Seite auch niemand finden. Und die Admins können sich halt ein Bookmark speichern.
Ist vielleicht nicht so elegant wie eine Login-Seite, aber dafür halt in 2 Sekunden gemacht...
Lieber dumm fragen, als dumm bleiben!

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

10

05.02.2015, 10:47

Der Server sollte die Datenbank überhaupt nicht exposen, schreib einen Service der die benötigten Anfragen beantwortet. Dann braucht man von außen erstmal keinen direkten Zugriff auf die Datenbank und kann sich authentifizieren mit einer Nutzer Tabelle.

Werbeanzeige