Als Testeinstellung, ich versuche, die web.config zu verwenden Sicherheit zu steuern, in folgenden Punkten:alle Dateien in einem Verzeichnis, über web.config
- Deny Zugriff auf alle Dateien in einem Verzeichnis, mit Ausnahme für eine bestimmte Datei
- erlauben den Zugriff auf alle Dateien in einem Verzeichnis, mit Ausnahme einer bestimmten Datei
so stelle ich die web.config wie folgt zusammen:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!-- Deny access to all files in a directory, except for a specific file -->
<location path="NonAccessibleDirectory">
<system.web>
<authorization>
<deny users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<location path="NonAccessibleDirectory/AccessibleFile.html">
<system.web>
<authorization>
<allow users="?"/>
<allow users="*"/>
</authorization>
</system.web>
</location>
<!-- Allow access to all files in a directory, except for a specific file -->
<location path="AccessibleDirectory/NonAccessibleFile.html">
<system.web>
<authorization>
<deny users="?"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
<system.web>
<compilation debug="true" targetFramework="4.5" />
<httpRuntime targetFramework="4.5" />
</system.web>
</configuration>
Wie erwartet:
- Wenn ich dem nicht zugänglichen Verzeichnis durchsuchen, und geben Sie keine Datei, ich Zugang erhalten verweigert
- Wenn ich zum zugängliches Verzeichnis durchsuchen, und geben Sie keine Datei, kann ich finden sie in der Liste der Dateien
die Probleme, die ich habe, sind:
- Wenn ich dem nicht zugänglichen Verzeichnis durchsuchen und eine Datei angeben, ich kann es sehen und ich hätte erwartet, dass kein Zugriff gewährt wird.
- Wenn ich zum barrierefreien Verzeichnis blättern und eine Datei angeben, die ich über die web.config gesperrt habe, kann ich sie immer noch anzeigen, und ich hätte erwartet, dass das nicht der Fall ist erteilter Zugang
Amy Ich konfiguriere die Dinge falsch?
Dies ist genau, was passiert, was Sinn macht, weil ich auf meiner Seite die System.Web.Security.UrlAuthorizationModule.CheckUrlAccessForPrincipal() -Methode verwende, um Links zu deaktivieren, auf die der Benutzer keinen Zugriff hat und die sie auch dann richtig deaktivieren Ich kann auf die Dateien zugreifen, indem ich eintippe in der URL. – Jeremy
Das Ändern meiner HTML-Seiten in aspx-Seiten hat mein Problem gelöst. Ebenso wie das Halten der HTML-Seiten, aber das Verwenden von System.Web.Security.UrlAuthorizationModule für UrlAuthorization – Jeremy