Security Problem auf IIS

spaceman007

Aktives Mitglied
Hallo zusammen,

ich habe ein Problem mit einer Applikation eines Kunden auf einem IIS.

Applikationsbeschrieb (stark vereinfacht) :
Der User öffnet die Applikation und sieht eine Formular mit dem er sich einlogen kann.

URL: http://www.eindomain.com/

Wenn er sich eingelogt hat, wird sein Username in die Session geschrieben und er wird in ein Subdirectory weitergeleitet.
Dort werden die abgelegten Files ( html & pdf ) in einer Liste dargestellt. (Auf den Inhalt dieser Directories habe ich keinen Einfluss, diese werden generiert)

URL: http://www.eindomain.com/kunde1/
URL: http://www.eindomain.com/kunde2/

Nun ist es aber leider so, dass der Kunde 1 auch auf die Files des Kunden 2 zugreifen kann, da die Autentifizierung auf Applikationsebene, also im ASP Script und in der ASP Session passiert und nicht auf dem IIS selber.


Nun meine Frage:
Kann man mit ASP auf die Zugriffsberechtigungen des IIS zugreifen oder diese Beeinflussen?
Hat sich schonmal jemand mit diesem Problem befasst?

Thanks for help

Gruss

spaceman007
 
QUOTE (spaceman007 @ Mi 12.10.2005, 17:41)Kann man mit ASP auf die Zugriffsberechtigungen des IIS zugreifen oder diese Beeinflussen?
Hat sich schonmal jemand mit diesem Problem befasst?


Ich hab mich schon mehrfach mit diesem Problem befasst, mit unterschiedlichen Lösungen aufgrund von unterschiedlichen Anforderungen.
Grundsätzlich kann man mit ASP auf die Zugriffsberechtigungen zugreifen, am einfachsten über zusätzliche Komponenten (DLLs) die es zum Teil auch gratis gibt. Aber aufgrund der Architektur kann ASP nicht verhindern, dass der IIS ein File an einen Client ausliefert, weil wenn der Zugriff ASP umgeht (also eine normale File-Anfrage wie eindomain.com/kunde1/einfile.txt) dann wird kein ASP ausgeführt, und kann somit auch nichts verhindern. Der IIS benutzt für die Zugriffssteuerung seine Konfiguration und die NT-Dateiberechtigungen, etwa so:

1. existiert das angeforderte File? wenn nein -> Fehlermeldung, wenn ja:
2. sind für das betreffende Web, das Directory oder das File in der IIS-Konfiguration der öffentliche Zugriff erlaubt? wenn ja, wird das File ausgeliefert (das dürfte in Deinem Fall zutreffen), wenn nein:
3. ist für den angemeldeten User eine Leseerlaubnis in den NT-Dateiberechtigungen gesetzt? wenn ja, wird das File ausgeliefert, wenn nein gibts ne Fehlermeldung.

Damit ASP hier überhaupt "wirken" kann, muss also die IIS-Konfiguration entsprechend eingestellt sein, und mindestens eine Leseerlaubnis gesetzt. Der "angemeldete User" kann via ASP gesetzt werden, es muss also nicht für jeden Kunden ein eigener NT-User definiert sein. Aber: falls die abgelegten html- und pdf-Files ebenfalls über ASP, oder auch über FTP, uploaded werden, müssen nach jedem Upload die richtigen Berechtigungen gesetzt werden. Das kann mit dem "alten" ASP sehr aufwendig zu implementieren sein.

Mit ASP.Net geht das sehr viel eleganter, deshalb würde ich heute nur noch die zweite Methode verwenden: Die abgelegten Files werden in Directories gespeichert, die gar nicht im Web-Pfad sind, d.h. von aussen überhaupt nicht zu erreichen. Das Uploaden von solchen Dateien lässt sich mit .Net sehr einfach implementieren. Dann wird für den Download eine ASPX-Datei benötigt; diese kontrolliert ASP-mässig ob der User angemeldet ist, und liefert dann das File als Text- oder Binärstream, mit dem passenden Header. (Diese Methode würde auch mit dem alten ASP funktionieren, man muss aber eine separate DLL dazu erstellen, und dies ist eher mühsam, Stichwort "DLL Hell").

Griessli
Irene
 
@spaceman007

Erstelle 2 neue windows konti, user1, user2.

Unter IIS klickt auf die virtuelle verzeichnis kunde1 und geh auf verzeichnissicherheit ud klick auf steuerung des anonymes zugriffs, unter anonymer zugriff gib mal user1 und das passwort, macht dasselbe für kunde2 mit user2.

Ändere die NTFS permissions lokal.

c:\inetpub\domain\kunde1\ <- user1 rwd, user2 kein zugriff
c:\inetpub\domain\kunde1\ <- user2 rwd, user1 kein zugriff

Das ganze problem hat mit impersonation zu tun, wie Irene schon gesagt hat, mit ASP.net ist es viel schöner.
http://msdn.microsoft.com/library/default....personation.asp

Gruss
Steven
 
Zurück
Oben