Hallo, ich möchte eine Datenbank-Anwendung programmieren(C# gefällt mir momentan ganz gut), die auf ein paar Client-PCs als eigenständige Anwendung läuft und die auf einen gemeinsamen SQL-Server zugreifen. Der SQL-Server sollte aus verschiedenen Gründen bei einem Webhoster laufen. Dadurch stellt sich jetzt aber die Frage nach der Art des Zugriffs und möglichen Sicherheitsrisiken...via Browser bzw. serverseitiges PHP-Skript ist das ja kein Problem(.htaccess-Auth, SSL) und da habe ich in all den Jahren noch nie irgendwelche Sicherheits-Probleme gehabt, aber ich möchte eigentlich keine Web-Anwendung, sondern ein eigenständiges Programm, dass wie eine native Windows-Anwendung aussieht und sich auch so anfühlt und lediglich die Abfragen an den Server übermittelt sowie die Ergebnisse abholt. Ich schätze mal, dass die meisten Hoster bei klassischen Shared-Hosting-Paketen externe Zugriffe auf ihre SQL-Server aus Sicherheitsgründen verbieten. Ein eigener Server kommt nur "managed" in Frage, da ich momentan nicht mal eben vom Programmierer zum Linux-Server-Admin umschulen möchte! Um die Sicherheit des Servers inklusive Updates, Patches, etc. sollten sich Profis vom Hoster kümmern. Könnte man z.B. mit C# einen SSH-Tunnel auf Port 3306 aufbauen und so sicher mit einem SQL-Server auf einem managed Server kommunizieren? Ich habe zwar schon einige Erfahrung mit lokaler Datenbank-Programmierung sowie mit auf PHP/MySQL basierenden Web-Anwendungen, aber hier fehlt mir einfach die Erfahrung, was möglich, sinnvoll und gleichzeitig sicher ist. Grüße, Plattfuß
:
Verschoben durch Admin
Sorry, war noch im falschen Forum...könnte das bitte jemand verschieben? Herzlichen Dank.
Die meisten Web-Hoster blocken die für den Zugriff erforderlichen Ports. Das heißt, dass Du in den meisten Fällen gar nicht erst die Möglichkeit bekommst, vom externen Programm aus auf den Server zuzugreifen. Die in Deinem Fall einfachste Lösung dürfte wohl die Implementierung von Web-Services sein. Die kannst Du wie gewohnt mit PHP umsetzen. Dein externes Programm kommuniziert dann über das normalle HTTP(S) Protokoll mit dem Webservice. Wenn Du dich etwas tiefer in die Absicherung von Linux und MySQL einarbeitest, kannst Du auch einen eigenen Server verwenden. Das geht sogar mit einem Rechner im heimischen Netz, den man per DynDNS von außen erreichbar macht. Ich nutze diese Möglichkeit schon seit Jahren ohne große Probleme ... ok ... hin und wieder müssen ein paar chinesische IP-Adressen geblockt werden ;-) aber dafür gibt es auch automatische Lösungen.
Plattfuß schrieb: > Könnte man z.B. mit C# einen SSH-Tunnel auf Port 3306 aufbauen und so > sicher mit einem SQL-Server auf einem managed Server kommunizieren? Ja, wobei der SSH Part eine Weiterleitung von einem Lokalen (loalhost) Port zum remote Port macht. klappt sehr gut, wobei der bessere weg natürlich ein richtiges VPN wäre.
Marc D. schrieb: > Plattfuß schrieb: >> Könnte man z.B. mit C# einen SSH-Tunnel auf Port 3306 aufbauen und so >> sicher mit einem SQL-Server auf einem managed Server kommunizieren? > > Ja, wobei der SSH Part eine Weiterleitung von einem Lokalen (loalhost) > Port zum remote Port macht. > > klappt sehr gut, wobei der bessere weg natürlich ein richtiges VPN wäre. der große Nachteil ist aber das es für clients Hinter Proxys nicht mehr geht. Ich würde auch alles über ein Web-service laufen lassen.
Peter II schrieb: > der große Nachteil ist aber das es für clients Hinter Proxys nicht mehr > geht. > > Ich würde auch alles über ein Web-service laufen lassen. Proxy richtig Konfiguriere könnte da helfen :-) OpenVPN über Port 443, macht da auch ohne ProxyAdmin normalerweise wenig Probleme. Sonst haste natürlich recht.
Hallo, Vielen Dank schon mal für die bisherige Hilfe. Mit diesen "Webservices" habe ich bislang leider Null Erfahrung. Muss ich das so verstehen, dass auf meinem SharedHosting-Webspace ein PHP-Erweiterung wie z.B. PHP SOAP laufen muss, welche die via HTTPS übertragene SQL-Anfragen von meinem C#-Programm an den SQL-Server weiterreicht und das ResultSet dann z.B. mittels WSDL in so einer Art XML-Suppe zurücksendet? In wie weit kann mir C# dabei das Leben einfacher machen? Gibt es da fertige Klassen-Methoden, an die ich eine SQL-Query übergeben kann? Und muss ich mich dann selbst um das umständliche und fehleranfällige Parsen der zurückgelieferten (XML?-)Daten kümmern, oder gibt es auch hier Methoden für die Übergabe der Daten an eine DataTable-Referenz, die ich dann ganz normal z.B. an ein GridView binden kann? Und wie ist die Performance bei dieser Art des Zugriffs verglichen mit einer klassischen in PHP programmierten WebAnwendung? Bislang kannte ich das bei nativen Anwendungen leider nur so, dass man mit einem Drittanbieter-Connector(also so eine Art Datenbank-Treiber) direkt auf die MySQL-DB zugreift und dann relativ bequem mit den Daten arbeiten kann. Wie funktioniert im Unterschied dazu ein "Webservice" in der aktuellen Visual Studio C# 2012 Version und welche Bedingungen müssen dazu beim Hoster erfüllt sein? Grüße, Plattfuß
Falls Du dich noch nicht für die Version per HTTP entschieden hast: all-inkl.com bietet per Default direkten Zugriff auf die SQL-Server an, wenn man dort ein Hosting-Paket hast. Eine günstige Alternative wäre ein eigener VPS (gibts für unter 10 EUR, wenn man sehr geringe Ansprüche hat auch unter 5 EUR pro Monat). Muss man dann natürlich selbst administrieren. Falls Datenschutz kein Problem ist, und es eine Webanwendun sein darf, ist vielleicht auch ein Blick in Richtung Google App Engine vielleicht interessant.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.