Saturday, November 4, 2023

ASP.NET-Sicherheitsübersicht – Microsoft-Support

ASP .NET Support Voice Column: ASP.NET-Sicherheitsübersicht

Um diese Spalte an Ihre Bedürfnisse anzupassen, möchten wir Sie einladen, Ihre Ideen zu Themen einzureichen, die Sie interessieren, und zu Problemen, die in zukünftigen Knowledge Base-Artikeln und Support Voice-Spalten behandelt werden sollen. Sie können Ihre Ideen und Ihr Feedback über das Ask For It-Formular einreichen. Unten in dieser Spalte finden Sie auch einen Link zum Formular.

Einführung

Sicherheit ist ein integraler Bestandteil jeder webbasierten Anwendung. Das Verständnis der ASP.NET-Sicherheit hilft beim Erstellen sicherer Webanwendungen. Dieses Dokument bietet einen kurzen Überblick über die Sicherheit in ASP.NET. Sie können die verschiedenen Ressourcen und Hinweise in diesem Dokument nutzen, um sich eingehend mit den Themen zu befassen.

Zurück an die Spitze

Das IIS-Sicherheitsmodell verstehen

Bevor die Anfragen ASP.NET erreichen, müssen sie von Microsoft Internet Information Services (IIS) authentifiziert werden. Es wäre sehr hilfreich zu erfahren, wie die IIS-Sicherheit funktioniert. Hilfreiche Informationen finden Sie in den folgenden Ressourcen.
INFO: Wie IIS Browser-Clients authentifiziert
Web-Sicherheit entwirren: Das Beste aus der IIS-Sicherheit herausholen
Wie funktioniert es?
Sicherheitsmodell für ASP.NET-Anwendungen
Übersicht über die Sicherheit von Microsoft Internet Information Server

Zurück an die Spitze

Informationen zur Worker-Prozessidentität

Unter Microsoft Windows 2000 oder Microsoft Windows XP läuft ASP.NET unter einem speziellen Benutzer namens ASPNET. Wenn Sie .NET Framework Version 1.1 auf einem Domänencontroller installieren, wird bei der Installation kein lokales ASPNET-Konto erstellt. Stattdessen werden ASP.NET-Anwendungen unter anderen Identitäten ausgeführt.

Auf Windows 2000-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität IWAM_machinename ausgeführt. Auf Windows 2003-Domänencontrollerservern werden ASP.NET-Anwendungen unter der Identität NETWORK SERVICE ausgeführt (unabhängig vom IIS-Isolationsmodus). Unter bestimmten Umständen erfordert die Ausführung von ASP.NET auf einem Domänencontroller, dass Sie zusätzliche Schritte unternehmen, damit die Installation ordnungsgemäß funktioniert.

317012 Prozess- und Anforderungsidentität in ASP.NET

Zurück an die Spitze

Authentifizierung bei der ASP.NET-Autorisierung

Bei der Authentifizierung werden Identifikationsdaten wie Name und Passwort von einem Benutzer eingeholt und diese Daten dann gegenüber einer Autorität validiert. Wenn die Anmeldeinformationen gültig sind, gilt die Entität, die die Anmeldeinformationen übermittelt hat, als authentifizierte Identität. Nachdem eine Identität authentifiziert wurde, bestimmt der Autorisierungsprozess, ob diese Identität Zugriff auf eine bestimmte Ressource hat.

ASP.NET implementiert die Authentifizierung über Authentifizierungsanbieter, die Codemodule, die den Code enthalten, der zur Authentifizierung der Anmeldeinformationen des Anforderers erforderlich ist. ASP.NET unterstützt Formularauthentifizierung, Passport-Authentifizierung und Windows-Authentifizierungsanbieter.

Um einen Authentifizierungsanbieter für eine ASP.NET-Anwendung zu aktivieren, müssen Sie lediglich wie folgt einen Eintrag für die Anwendungskonfigurationsdatei erstellen:

// Web.config file <authentication mode= "[Windows|Forms|Passport|None]"/>

Der Modus ist auf einen der Authentifizierungsmodi eingestellt: Windows, Forms, Passport oder Keine. Der Standardwert ist Windows. Wenn der Modus „Keine" lautet, wendet ASP.NET keine zusätzliche Authentifizierung auf die Anforderung an. Dies kann nützlich sein, wenn Sie ein benutzerdefiniertes Authentifizierungsschema implementieren möchten oder wenn Sie ausschließlich anonyme Authentifizierung verwenden und das höchstmögliche Leistungsniveau wünschen.

Der Authentifizierungsmodus kann nicht auf einer Ebene unterhalb des Anwendungsstammverzeichnisses festgelegt werden. Wie bei anderen ASP.NET-Modulen erben Unterverzeichnisse im URL-Bereich Authentifizierungsmodule, sofern sie nicht explizit überschrieben werden. Zurück an die Spitze

Formularbasierte Authentifizierung

Die Formularauthentifizierung ist ein System, mit dem nicht authentifizierte Anforderungen mithilfe der clientseitigen HTTP-Umleitung an ein HTML-Formular umgeleitet werden. Der Benutzer gibt Anmeldeinformationen ein und sendet das Formular ab. Wenn die Anwendung die Anfrage authentifiziert, gibt das System ein Cookie aus, das die Anmeldeinformationen oder einen Schlüssel zum erneuten Erlangen der Identität enthält. Nachfolgende Anfragen werden mit dem Cookie in den Anfrageheadern ausgegeben. Sie werden von einem ASP.NET-Ereignishandler mithilfe der vom Anwendungsentwickler angegebenen Validierungsmethode authentifiziert und autorisiert.

Schutz statischer Dateitypen mithilfe der Formularauthentifizierung

Standardmäßig schützt die Formularauthentifizierung nur ASPX-Seiten und alle anderen .NET-Erweiterungen. Sie können die Formularauthentifizierung konfigurieren, um andere statische Erweiterungen wie .jpg, .gif, .html, .pdf usw. zu schützen. Ordnen Sie dazu diese Erweiterungen mithilfe des IIS-Managers wie folgt aspnet_isapi.dll zu:

  1. Öffnen Sie den IIS-Manager. Klicken Sie dazu auf Start , dann auf Programme , zeigen Sie auf Verwaltung und klicken Sie dann auf Internetinformationsdienste-Manager .

  2. Suchen Sie den virtuellen Ordner Ihrer Anwendung und klicken Sie mit der rechten Maustaste darauf (Ihre Anwendung muss für die Formularauthentifizierung aktiviert sein).

  3. Klicken Sie auf Eigenschaften .

  4. Klicken Sie auf Konfiguration .

  5. Klicken Sie auf der Registerkarte Zuordnungen auf
    Hinzufügen .

  6. Klicken Sie im Feld „Ausführbare Datei" auf „aspnet_isapi.dll" , das sich im Ordner „%Windows-Ordner%\Microsoft.NET\Framework\ FrameworkVersion " befindet.

  7. Geben Sie im Feld „Erweiterung" Ihre Erweiterung ein (z. B. .jpg).

  8. Geben Sie mindestens das Verb „GET" an.

  9. Klicken Sie, um das Kontrollkästchen „Überprüfen, ob Datei vorhanden ist" zu deaktivieren.

  10. Klicken Sie für die restlichen Dialogfelder auf OK .

Schutz klassischer ASP-Seiten mithilfe der Formularauthentifizierung

Der Schutz klassischer ASP-Seiten durch Formularauthentifizierung wird vom Entwurf nicht unterstützt, da ASP und ASP.NET unterschiedliche Handler verwenden. Sie können es jedoch mithilfe von COM-Interop und Webdiensten zum Laufen bringen.


Das folgende Beispiel sollte funktionieren. Dies wäre ziemlich einfach gewesen, wenn man einfach COM Interop verwendet hätte, um die Funktionen des FormsAutentication-Dienstprogramms aufzurufen. Allerdings erfordern die Funktionen einen HttpContext, der nur in einer ASP.NET-Anwendung verfügbar ist.

Um dieses Problem zu umgehen, erstellen Sie einen ASP.NET-Webdienst, der die Validierung des Formularauthentifizierungstickets durchführt.

  1. Verwenden Sie als Ausgangspunkt das ASP.NET-Formularauthentifizierungsbeispiel aus dem folgenden Artikel:

    301240 So implementieren Sie die formularbasierte Authentifizierung in Ihrer ASP.NET-Anwendung mithilfe von C#.NET

  2. Erstellen Sie eine Klasse, die ein übergebenes Ticket manuell validiert, den Namen des verwendeten Formularauthentifizierungs-Cookies und die Anmelde-URL zurückgibt (alles, damit der Code mit minimalem Verwaltungsaufwand eigenständig sein kann):

      ////////////// Beispielcode starten //////////////    //Diese Methode validiert ein von ASP übergebenes Ticket  public bool IsAuthenticated(string rawCookieData)  {  if(rawCookieData.Trim().Length <= 0)  falsch zurückgeben;    FormsAuthenticationTicket decryptedTicket;    versuchen  {  decryptedTicket = FormsAuthentication.Decrypt(rawCookieData);  }  fangen  {  //Fehlerursache oder was auch immer hier protokollieren, wenn Sie möchten  falsch zurückgeben;  }    if (decryptedTicket.Expired)  falsch zurückgeben;    // Optional können Sie die Methodensignatur in return ändern  // das entschlüsselte Ticket und dann können Sie RenewTicketIfOld aufrufen  // und dann Code auf der ASP-Seite implementieren, um das Cookie zu aktualisieren  // mit dem neuen Ticket. Dies wäre nur dann notwendig, wenn die   // Für das Ticket ist ein Timeout festgelegt (dies setzt das Timeout zurück)  // siehe die MSDN-Dokumente zu FormsAuthentication.RenewTicketIfOld.    return true;    }    // Die Methode gibt lediglich den Namen des verwendeten Cookies zurück  öffentliche Zeichenfolge GetCookieName()  {  return FormsAuthentication.FormsCookieName.ToString();  }    // Methode gibt die in der Umleitung verwendete Anmelde-URL zurück  // Dies ist schwieriger, da keine FormsAuth-Hilfsprogrammfunktion verfügbar ist   Geben Sie dies zurück, sodass wir uns web.config manuell ansehen müssen  privater String GetLoginURL()   {  string sConfigPath = Server.MapPath(Request.ApplicationPath) + "\\web.config";    XmlDocument doc = new XmlDocument();  doc.Load(sConfigPath);    versuchen  {  XmlNode xmlNodeForms =   doc.SelectSingleNode("configuration/system.web/authentication/forms");  return xmlNodeForms.Attributes.GetNamedItem("loginUrl").InnerText;  }  fangen  {  throw new System.Exception("error in GetLoginURL()");  }    }    ////////////// Endbeispiel //////////////  
  3. Erstellen Sie eine weitere .NET-Wrapper-Klasse, die diesen Webdienst aufruft (oder erstellen und kompilieren Sie eine Webproxy-Klasse).

  4. Verwenden Sie Regasm.exe und Gacutil.exe, um diese „Wrapper"-Klasse über ComInterop von ASP aus aufrufbar zu machen.

  5. Der ASP-Code würde etwa so aussehen:

      Setze oAuthClass = Server.CreateObject("ASPNETFormsAuth.WrapperClass")  Wenn nicht oAuthClass.IsAuthenticated(Request.Cookies(oAuthClass.GetCookieName)) Dann       Response.Redirect("http://servername/ASPApplicationRoot/" &   oAuthClass.GetLoginURL & "?RetrunURL=" & Requset.ServerVariables("URL"))  Ende wenn

Weitere Informationen zur Formularauthentifizierung finden Sie in den folgenden Ressourcen:

Formularauthentifizierungsanbieter

Implementieren Sie die formularbasierte Authentifizierung in einer ASP.NET-Anwendung mithilfe von C#.NET


Zurück an die Spitze

Passbasierte Authentifizierung

Die passportbasierte Authentifizierung ist ein zentraler Authentifizierungsdienst von Microsoft, der eine einzige Anmeldung und Kernprofildienste für Mitgliedsseiten bietet. Weitere Informationen finden Sie auf der folgenden Microsoft-Website:

Anbieter für Passauthentifizierung. Zurück an die Spitze

Windows-basierte Authentifizierung

ASP.NET verwendet die Windows-Authentifizierung in Verbindung mit der Microsoft Internet Information Services (IIS)-Authentifizierung. Die Authentifizierung wird von IIS auf eine von drei Arten durchgeführt: Basis-, Digest- oder integrierte Windows-Authentifizierung. Wenn die IIS-Authentifizierung abgeschlossen ist, verwendet ASP.NET die authentifizierte Identität, um den Zugriff zu autorisieren. Weitere Informationen finden Sie in den folgenden Ressourcen:

Windows-Authentifizierungsanbieter

323176 So implementieren Sie die Windows-Authentifizierung und -Autorisierung in ASP.NET

Zurück an die Spitze

Genehmigung

Der Zweck der Autorisierung besteht darin, zu bestimmen, ob einer Identität der von einer Ressource angeforderte Zugriffstyp gewährt werden soll. Es gibt zwei grundlegende Möglichkeiten, den Zugriff auf eine bestimmte Ressource zu autorisieren:

  • Dateiautorisierung

    Die Dateiautorisierung erfolgt durch
    FileAuthorizationModule und ist aktiv, wenn Sie die Windows-Authentifizierung verwenden. Es führt eine Zugriffskontrolllistenprüfung (ACL) der .aspx- oder .asmx-Handlerdatei durch, um festzustellen, ob ein Benutzer Zugriff haben sollte. Anwendungen können den Identitätswechsel auch nutzen, um Ressourcenprüfungen für Ressourcen durchzuführen, auf die sie zugreifen. Weitere Informationen zum Identitätswechsel finden Sie auf der folgenden Microsoft-Website:

    ASP.NET-Identitätswechsel .

  • URL-Autorisierung

    Die URL-Autorisierung wird von durchgeführt
    URLAuthorizationModule , das Benutzer und Rollen Teilen des URL-Namespace zuordnet. Dieses Modul implementiert sowohl positive als auch negative Autorisierungsaussagen. Das heißt, das Modul kann verwendet werden, um den Zugriff auf beliebige Teile des URL-Namespace für bestimmte Gruppen, Benutzer oder Rollen selektiv zuzulassen oder zu verweigern.

Weitere Informationen zur Autorisierung finden Sie auf den folgenden Microsoft-Websites:

ASP.NET-Autorisierung

No comments:

Post a Comment