Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Silverlight Dienste nur für mein Projekt erlauben
mygil
myCSharp.de - Member



Dabei seit:
Beiträge: 127

Themenstarter:

Silverlight Dienste nur für mein Projekt erlauben

beantworten | zitieren | melden

Hallo!

Habe folgende Frage: Und zwar habe ich eine kleine Silverlight-Anwendung ertellt. Diese greift mir auf selbsterstellte Webservice (WCF) Dienste zu.

Das ganze klappt bestens. Nur habe ich jetzt das Programm inkl. dem Webservice auf einen IIS gepublished. Funktioniert immer noch bestens.

Aber jetzt kann jeder auf meine Dienste direkt zugreifen?!
Wie kann ich verhindern, dass jemand einfach mein Service in sein Projekt einbindet und ausführt?

Vielen Dank für eure Hilfe!!!
private Nachricht | Beiträge des Benutzers
Floste
myCSharp.de - Member

Avatar #avatar-2376.jpg


Dabei seit:
Beiträge: 1158
Herkunft: Norddeutschland

beantworten | zitieren | melden

Erschweren ist möglich, aber ganz verhindern kann man es nicht.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Floste am .
Projekte:Jade, HttpSaver
Zum Rechtschreiben gibts doch schon die Politiker. Aber die bauen auch nur mist!
private Nachricht | Beiträge des Benutzers
mygil
myCSharp.de - Member



Dabei seit:
Beiträge: 127

Themenstarter:

beantworten | zitieren | melden

Dann habe ich offensichtlich einen gröberen Fehlere gemacht...
Eigentlich möchte ich nur eine Silverlight-Anwendung haben, die mit MSSQL Daten arbeitet. DAfür habe ich WCF Dienste erstellt...

Was hätte ich stattdesse machen müssen? Sodass nur meine Anwedung auf die Daten meines SQL Servers zugreift?

lg myGil
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1249

beantworten | zitieren | melden

Die Technologie spielt keine Rolle. Sobald du eine verteilte Anwendung baust und keinen Einfluß über die Verbreitung des Clients mehr hast, kannst du nicht mehr 100% verhindern, dass jemand deinen Client umgeht und anderweitig auf die Daten zugreift. Das ist ein konzeptionelles Problem. Du kannst es höchstens erschweren, aber gänlich verhindern kannst du das nicht. Das alles wurde schon oft besprochen.
private Nachricht | Beiträge des Benutzers
mygil
myCSharp.de - Member



Dabei seit:
Beiträge: 127

Themenstarter:

beantworten | zitieren | melden

Also dass verstehe ich jetzt überhaupt nicht...

Es gibt doch viele Web-Anwendungen die genau das machen was ich brauche:
Z.b. Netbanking von der Sparkasse (http://www.s-netbanking.at/)
Da meldet man sich doch auch über seinen einen Login an und kann Überweisungen etc. tätigen. Aber ich hoffe wohl, dass niemand die Funktionen selbst irgendwie anderwertig aufrufen kann ODER?

Ich möchte nur eine ganz einfache Anwendung schreiben, die halt serverseitig arbeitet aber nur meine Anwendung die Funktion am Server nutzen kann!

Das muss doch irgendwie gehen oder?
DANKE für eure Hilfe!
lg Gilbert
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von mygil am .
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1249

beantworten | zitieren | melden

Zitat von mygil
Aber ich hoffe wohl, dass niemand die Funktionen selbst irgendwie anderwertig aufrufen kann ODER?

Natürlich. Man könnte die Kommunikation/den Client reverse engineeren und eine eigene Software schreiben, die mit dem Server kommuniziert. Dagegen kann sich auch die Sparkasse nicht schützen. Wogegen man sich aber schon schützen kann, ist dass der Service missbraucht wird. Hier sollte der Server aber eine klare und wohl definierte API bieten und alles serverseitig validieren. Dann kann dir im Endeffekt auch egal sein, mit welchen Client jemand drauf zugreift, du weißt dann, dass er trotzdem nur das machen kann, was er auch machen darf.
private Nachricht | Beiträge des Benutzers
mygil
myCSharp.de - Member



Dabei seit:
Beiträge: 127

Themenstarter:

beantworten | zitieren | melden

Was genau meinst du mit:
Zitat
Wogegen man sich aber schon schützen kann, ist dass der Service missbraucht wird. Hier sollte der Server aber eine klare und wohl definierte API bieten und alles serverseitig validieren. Dann kann dir im Endeffekt auch egal sein, mit welchen Client jemand drauf zugreift, du weißt dann, dass er trotzdem nur das machen kann, was er auch machen darf.

Ich könnte z.b. jeder Webservice-Funktion die Login-DAten mitschicken und in jeder Funktion jedesmal die Login-DAten überprüfen bevor etwas passiert.
Meintest du sowas?

lg Gilbert
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1249

beantworten | zitieren | melden

So in der Art, wobei das jetzt nicht unbedingt sinnvoll ist. Du musst Authentifizierung und Autorisierung unterscheiden. Die Authentifizierung braucht nur einmal zu erfolgen. Danach muss der Benutzer eine gültige Session haben, um irgendwas ausführen zu können. Das macht man am besten nicht selber, sonder verlässt sich auf etablierte Frameworks, wie WCF, weil da kann man einiges falsch machen, wenn man das selber implementiert.
Die Autorisierung erfolgt dann anhand der Session und der Regeln, die du definiert hast. Ein grober Fehler wäre, Benutzerrechte clientseitig zu prüfen und sich auf dem Server darauf zu verlassen, dass der Client schon weiß, was er tut. Aber ich hoffe, das machst du nicht. Deine Schnittstelle darf halt keine Möglichkeit bieten, irgendwelchen Unfug zu treiben, den man mit dem offiziellen Client nicht treiben könnte. z.B. die Datensätze anderer Benutzer einsehen oder im Namen anderer Benutzer irgendwelche Aktionen ausführen. Die Schnittstelle sollte möglichst schmal sein und sich intern alle Daten selbst besorgen, und nicht vom Benutzer übergeben lassen, wenn nicht unbedingt notwendig. Und alle Benutzereingaben genauestens validieren. Das sollte dann eigentlich reichen und du brauchst dir auch keine Sorgen darum machen, dass jemand deinen Client umgeht.
private Nachricht | Beiträge des Benutzers