Hallo Wolfgang,
Du meinst Apache mit einem PHP-Skript.
Ja!
Auf dem rechner Lokal?
Ist der MYSQL-Server und die Datenbank daraus gegen draussen abgeschotten und erlaubt nur Zugriff vom Webserver?
Bist du sicher, dass wirklich nur Port 80 offen ist?
Rechner wird von Provider gestellt. Habe keinen Einfluss drauf. Hier muss ich einfach davon ausgehen dass der seiner Pflicht entsprechend nachkommt.
Was hat die Table damit zu tun?
ich denke, das PHP-Skript decodiert und wandelt dann die Eingaberequests in entsprechende Abfragen an die datenbank um, die dann aber natürlich ganz anders aussehen können.
Nein, eben genau nicht denn dann würden ja zwischen Client und Server wieder unverschlüsselte Daten hin und her laufen. Ich verschlüssele schon direkt auf Client-Seite, übertrage verschlüsselte Daten zum Server und PHP schreibt die Daten nur noch in die DB. DB ist nach aussen nicht bekannt. Beim Lesen werden auch genauso von PHP an das Applet verschlüsselte Daten geliefert und das Applet entschlüsselt diese praktisch erst vor der Anzeige.
Auf dem Server gibt es logischerweise ein öffentliches PHP-Skript mit folgenden Funktionen:
-gib größte ID (wäre mir egal)wieso?
-gib alle Records (wäre mir egal, kann ja keiner was mit anfangen)
wieso?
-füge neuen Record an (passt mir schon nicht mehr so da dies ja Schrottdaten wären)
urg
-lösche Record mit ID (passt mir überhaupt nicht)
Warum kann dein PHP-Skript dies alles?
Wer soll das sonst können? Das Java-Applet nicht da die Datenbank ja nicht ausserhalb des Servers bekannt ist (und ich kann die auch nicht bekannt machen).
Warum machst du dann nicht auch damit eine Identifizierung des Clients?
Du kannst entweder der Clientsoftware eine zeitabhaengige Identifation mitgeben, die eine Checksumme aus einen Private/Public-key verfahren nutzt.
Ausserdem kannst du natuerlich auch eine Usereingabe fordern.
Das ist ja das was ich mit dem unten genanten Vorschlag machen will.
- Ueberleg dir ein Rollenkonzept für die Datenbank:
Lege verschiedene User an, dieauch nur verschiedene Aktionen auf
Tables machen dürfen.
Hierbei wäre auch die Überlegung angebracht ob du nicht besser
eine professionelle datenbank anstelle von MYSQL nutzt. Zum
Beispiel Firebird.
Jeder Client kann z.B. eine Userkennung haben, die übermittelt und
genutzt wird.
Single User, nur ich. Andere Datenbank kommt nicht in Frage. Ich habe einen Provider dem ich ein paar Cent pro Monat zahle und versuche das zu machen was da geht (ist ja wie geschrieben ein Lernprojekt um mich mit Sicherheit zu beschäftigen).
Ein Konzept wäre:
Client ----> Firewall -> Apache-Server -> Datenbankserver
Kostet zwar mehr, aber wenn es z.B. um schützenswerte Personendaten handelt, wäre sowas wichtig.
Deshalb will ich ja dass ausserhalb des Clients (also sowohl auf der Leitung als auch auf dem Server) immer nur verschlüsselte Daten sind (was ja auch der Fall ist).
- Dein Verfahren zur Austausch von Daten sollte Zeitabhaengig sein.
D.h. eine Session-ID sollte nru eine bestimmte Zeit lang gültig
sein.
Beschreib ich ja mit meinem Hello Server => Server speichert SessionID + Timestamp und prüft beim nächsten Zugriff ob Timestamp nicht zu alt ist.
- Dein PHP-Skript tut nur dann was, wenn es eine korrekte
Identifizierung des Gegenuebers hat. Auf keinen fall soll es
irgendwelche daten rausgeben oder IDs, wenn es nicht weiss an
wem.
Ich glaub ich implementier das jetzt mal so wie ich mir das denke und poste dann hier einen Link zum Probieren und auch zum Sourcecode von dem Ganzen. Dann lässt es sich vermutlich leider diskutieren.
Danke Dir für Deine Vorschläge. Bei dem "Zeitabhaengig" war ich mir nicht sicher ob das wirklich notwendig ist aber da Du das genauso siehst mach ich das so.
Ciao
Thomas Grötzner
Signatur? Was ist das?