2016-05-24 2 views
1

Bedingungen: .Net MVC 5 Projektvorlage.Allen Zugriff auf Ordner in .net Mvc neben Inhalt/Skripts zu verweigern

Idee: Block alle Ordner Dateien zugreifen neben Inhalt/scripts, nur Projekt root web.config

Lösungen unter Verwendung fand ich aber nicht zufrieden mit:

  1. ausblenden jeder Ordner eine solche Struktur Hinzufügen in web.config

    <location path="Upload"> 
        <system.web> 
         <authorization> 
          <deny users="*" /> 
         </authorization> 
        </system.web> 
    </location>` 
    

nicht wegen, da passt könnte/würde dif dene Ordnernamen und Sie sollen es immer für jeden auf dieser Vorlage, neue Ordner basierten Projektes ändern hinzugefügt

  1. diesen Block verwenden:

    <security> 
        <requestFiltering> 
         <hiddenSegments applyToWebDAV="true"> 
          <add segment="Upload"/> 
         </hiddenSegments> 
        </requestFiltering> 
    </security>` 
    

Does nicht Da es verschiedene Ordnernamen geben könnte/würde, sollten Sie diese für jedes Projekt auf der Grundlage dieser Vorlage ändern, wobei ein neuer Ordner hinzugefügt wird. Es ist auch nicht Block für Ordner, blockiert es durch URL, also wenn Sie Routing mit z./api/upload/movie/- zu jedem Controller - es wird blockiert

Also, gibt es irgendwelche Lösungen, um alle Ordner Dateien zu blockieren, neben einigen bin ich 100% sicher, sind sicher?

Antwort

0

Konnte negierte IIS URL Rewrite-Regeln funktionieren? Sie könnten eine Regel erstellen, die prüft, ob der Pfad "content" oder "scripts" ist, dann setzen Sie das negate-Attribut auf "true" und setzen die Aktion auf "AbortRequest". Das würde jede Anfrage an den Server beenden, die mit einem anderen Pfad als den angegebenen Pfaden übereinstimmt.

Überprüfen Sie die "Erstellen einer Zugriffsblockregel" von here und this answer.

Sie könnte etwa so versuchen:

<rule name="Deny all folder access" stopProcessing="true"> 
    <match url="^(content|scripts|whatever)\/.*$" negate="true" /> 
    <action type="AbortRequest" /> 
</rule> 

Beachten Sie, dass diese regex alles blockiert, die nicht in Inhalt oder Skripte ist. Wie das Stammverzeichnis, alle Dateien im Stammverzeichnis (wie /favicon.ico), alle Ihre Seiten unter root (wie/contact-us) und so weiter. Es ist technisch eine Antwort auf Ihre Frage, aber Sie müssen mit dieser Regex herumspielen, um es nützlicher zu machen.

Verwandte Themen