Ich habe in meinem ASP.NET-Projekt ein Unterverzeichnis, das Dienstprogrammdateien enthält. Sie werden vom Code zur Laufzeit benötigt, aber ich möchte nicht, dass sie im Web sichtbar sind.
Wie lautet die Syntax in einer Web.config-Datei, um allen Benutzern den Zugriff auf ein einzelnes Unterverzeichnis und seinen gesamten Inhalt zu sperren?
Antwort1
IIS 7 verfügt über eine neue Funktion zum Filtern von Anforderungen. Sie möchten wahrscheinlich die Konfiguration für versteckte Segmente verwenden:
<configuration>
<system.webServer>
<security>
<requestFiltering>
<hiddenSegments>
<add segment="BIN"/>
</hiddenSegments>
</requestFiltering>
</security>
</system.webServer>
</configuration>
Dies bewirkthttp://IhreSite/binnicht bedienbar zu sein (aberhttp://IhreSite/binärfunktioniert noch)
Kasse: http://learn.iis.net/page.aspx/143/how-to-use-request-filtering
Antwort2
Ihr Problem ist, dass ASP.Net nie die Möglichkeit hat, einzugreifen, wenn IIS die Dateien einfach zurückgibt. Ich glaube, das lässt sich durch die Aktivierung der formularbasierten Authentifizierung und einiges Herumprobieren erreichen, aber ich würde die Dateien einfach außerhalb des wwwroot-Ordners verschieben.
JR
Antwort3
Das sollte funktionieren:
<configuration>
<location path="FolderName">
<system.web>
<authorization>
<deny users="*"/>
</authorization>
</system.web>
</location>
</configuration>
Antwort4
Es ist eine alte Frage, aber dies ist ein einfaches Drop-In web.config
für jedes Verzeichnis im Webserverpfad. Es entfernt alle Benutzerrollen und setzt dann den Standardzugriff auf Verweigern. Einfach und keine Konfiguration erforderlich.
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authorization>
<remove users="*" roles="" verbs="" />
<add accessType="Deny" users="*" />
</authorization>
</security>
</system.webServer>
</configuration>