Forum: PC-Programmierung Lokale Anwendung und SQL-Zugriff über Webhoster


von Plattfuß (Gast)


Lesenswert?

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
von Plattfuß (Gast)


Lesenswert?

Sorry, war noch im falschen Forum...könnte das bitte jemand verschieben? 
Herzlichen Dank.

von Digi S. (digispark)


Lesenswert?

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.

von Marc (gierig) Benutzerseite


Lesenswert?

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.

von Peter II (Gast)


Lesenswert?

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.

von Marc (gierig) Benutzerseite


Lesenswert?

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.

von Plattfuß (Gast)


Lesenswert?

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ß

von Hank P. (hp67)


Lesenswert?

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
Noch kein Account? Hier anmelden.