Externe nutzung von MySQL in punkto sicherheit
-
hallo zusammen
mich würde interessieren was ihr zum thema sicherheit mit mysql auf externer nutzung sagt. ich habe ein windows programm geschrieben, welches auf eine mysql datenbank zugreifft. das "problem" ist nun, das die mysql login daten im programm verankert sind. zwar liegen diese daten verschlüsselt im programmcode vor und es wird SSL verschlüsselt mit dem server aggiert, aber ich sitze dennoch auf heissen kohlen :p
wie dumm findet ihr das? dürft ruhig erlich sein :). theoretisch gesehen, kommt man nur an die login daten wenn man die anwendung cracken könnte. diese ist jedoch wiederum mit einem application protecting tool geschützt und somit wird das wiederum auch nicht einfach. selbst dann müsste man noch die verschlüsselung knacken.
mir ist leider keine bessere möglichkeit in den sinn gekommen. kennt ihr eine wirklich saubere und sichere lösung um mit einer mysql datenbank via einem software programm zu arbeiten, wo jedoch wie login daten niemals vom user eingegeben werden können/müssen. habe mir schon gedacht das ganze per PHP zu lösen, das evl. über POST bestimmte parameter mit einem eigenen simplen xml ähnlichen datenpacket gearbeitet wird. oder vielleicht mit SOAP. aber janu. wie sieht ihr das ganze? gibt es einen besseren weg als den, den ich eingeschlagen habe, oder ist er eurer meinung nach garnicht mal so unsicher wenn man bedenkt wie ich die sensibilität wahrgenommen habe?
vielen dank für euer feedback
-
erste frage:
die eingabedaten werden aber überprüft? sql injection vorbeugend?
sonderzeichen (Auswahl: %, \, \x00, ; , # ...) und eventuell auch gut geparst Schlüsselworte ausreichend erkannt (nur als zusatz) und die eingabe escaped?
datentypen der eingaben geprüft, und die verschlüsselung im code vorgenommen... ?
prepared statements wären ein schlagwort, und mysql 5 bietet m.W. stored procedures an.
-
hallo elise und vielen dank für deine antwort. ich muss vieleicht noch erwähnen, dass es sich nicht um ein management programm handelt. in anderen worten: alle operationen sind bereits im programmcode festgelegt. der benutzer hat keine möglichkeit eigene statements auszuführen, klauseln zu setzen oder sonstiges. dies wird alles von der anwendung selbstständig durchgeführt und ist nicht manipulierbar im klassischen sinne.
insofern erübrigt sich eigentlich dein ganzer erster beitragsteil wenn ich dich richtig verstanden habe. aber deine erwähnung zu stored procedures klingt interessant. nur stellt sich mir die frage ob ich das dann noch brauche da ich ja bereits alles so ähnlich manage. gehe ich richtig der annahme, dass man auch für die nutzung von stored procedures ein login zum server benötigt? wohl schon. wie würdest du nun danhand meines updates die sicherheit der software sehen?
-
sorry, jetzt hab ich es erst verstanden.
alles auf den server zu verlagern, klingt gut, also keine statements über den äther schicken, bzw. das problem liegt ja schon vorher im programm.
stored procedures hab ich selber noch nicht verwandt, soviel ich weiß,erst ab mysql 5, aber man braucht einen zugriff, klar.
-
habe ich gerade etwas über stored procedures schlau gemacht. wenn ich beim durchflug alles richtig verstanden habe ist es die absolute sicherheits lösung für mein anliegen. so kann ich dann alle statements die momentan im programm code verankert sind als stored procedures lösen und durch (hoffentlich) zwei, drei parameter erweiterungen so alles lösen. dann kann ich einen neuen mysql benutzer einrichten dem es nur gestattet ist, stored procedures zu verwenden und wenn ich jetzt keinen denkfehler gemacht habe, wird es, auch wenn man die server login daten rausfischen könnte, nicht mehr möglich sein irgendwelche datenbank manipulationen umzusetzen.
ich danke dir vielvielmals ich glaube du hast mich von meinem paranoia trip befreit
-
Es ist unklug es so zu machen. Wenn du MySQL sowieso extern hast dann sicher auch einen WEBSERVER.
Somit biete sich SOAP an. Ist aber denke ich bei dir zu spät.
-
das habe ich mir auch schon überlegt. aber was spricht deiner meinung nach gegen stored procedures? ich denke das die eigentlich bombensicher sein sollten da man sie ja cleintseitig nicht manipulieren kann. zuguterletzt hätte der mysql user ja auch nur rechte für die stored procedures
-
Dagegen habe ich nichts. Einen SQL-Server offen zu lassen ist aber schlechter als einen Webserver. Der SQL kann in der DMZ laufen.
-
Dr Hax schrieb:
das habe ich mir auch schon überlegt. aber was spricht deiner meinung nach gegen stored procedures? ich denke das die eigentlich bombensicher sein sollten da man sie ja cleintseitig nicht manipulieren kann.
Natürlich kann man Clientseitig ALLES maniupulieren! Dazu muß nur einen Sniffer als Netzwerk hänge und eine legale Session mitloggen, danach baut man sich seinen eigenen Evil-Client mit dem man ganz gezielt die DB manipuliert. Wenn Sicherheit ein Problem ist, d.h. kein Haus eigenen Netzwerk. Dann MUSST Du in jedem Fall einen Ebene zwischen Client und SQL-Server einziehen -> Multitier.
Du darfst grundsätzlich dem Client nicht vertrauen, da dieser beliebig gegen ein manipuliertes Programm ausgetauscht worden sein kann bzw. der IP Datenstrom manipuliert worden sein kann.