6 Stimmen

Beschränkung des Downloads bestimmter Dateitypen

Ich möchte meine Web-App so einschränken, dass .txt-Dateien nicht heruntergeladen/angezeigt werden können. Ist dies etwas, das ich in meiner web.config-Datei einrichten kann?

Ich habe dies in meiner Konfigurationsdatei ausprobiert:

<system.web>
    <httpHandlers>
        <add verb="*" path="*.txt" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
</system.web>

...aber es hatte keine Wirkung. Ich verwende IIS7 und die Anwendung ist .NET3.5, könnte dies etwas damit zu tun haben? Ich weiß, dass dies eigentlich für .NEt 1.0 1.1 und 2.0 funktionieren würde.

Ich habe in der Dokumentation dazu ( httpHandler hinzufügen ), die Anforderungen Abschnitt:

Microsoft Internet Information Services (IIS) Version 5.0, 5.1 oder 6.0
Das .NET Framework Version 1.0, 1.1 oder 2.0
Microsoft Visual Studio 2003 oder Visual Studio 2005

...was bedeutet, dass dies in .NET 3 und IIS7 nicht unterstützt wird...

Wo ist dies in IIS7 angegeben?

11voto

Ahmad Mageed Punkte 91261

Schauen Sie sich diesen Artikel des MS-Supports an, wie Sie dies erreichen können: HOW TO: ASP.NET zum Schutz von Dateitypen verwenden .

Dazu müssen Sie IIS so einrichten, dass diese Anfragen an ASP.NET weitergeleitet werden, und dann Ihre web.config so einrichten, dass die gewünschten Dateitypen blockiert werden, z. B: (nb dies funktioniert für Ihre Dev-Maschine und vor IIS7 - sehen Sie unten nach)

<system.web>
    <httpHandlers>
        <add verb="*" path="*.ini" type="System.Web.HttpForbiddenHandler" />
    </httpHandlers>
</system.web>

Nach Angaben der httpHandlers Element Seite sind die folgenden Erweiterungen ab .NET 2.0 standardmäßig verboten (.ini gehört nicht dazu):

*.asax, *.ascx, *.master, *.skin, *.browser, *.sitemap, *.config, *.cs, *.csproj, *.vb, *.vbproj, *.webinfo, *.licx, *.resx, *.resources, *. mdb, *.vjsproj, *.java, *.jsl, *.ldb, *.dsdgm, *.ssdgm, *.lsad, *.ssmap, *.cd, *.dsprototype, *.lsaprototype, *.sdm, *.sdmDocument, *.mdf, *.ldf

EDITAR: dies gilt für IIS-Versionen vor IIS 7.0. IIS 7.0 fügt einen zusätzlichen Betriebsmodus hinzu, den so genannten integrierten Modus (Standard für ASP.NET), der die Platzierung von Handlern in <system.webServer>/<handlers> 代わりに <system.web>/<httpHandlers> . Ich habe einige weitere Informationen und Links zu @awes Antwort auf dieser Seite hinzugefügt, siehe dort für weitere Details.

WICHTIG! für IIS 7.0 oder höher

Wie in der Bearbeitung angegeben, müssen Sie die <add> Element an einer anderen Stelle und die Regel braucht auch einen Namen - wenn Sie keinen Namen angeben, erhalten Sie beim Neustart einen internen Fehler 500

  <system.webServer>
        <handlers>
            <add name="IgnoreIni" verb="*" path="*.ini" type="System.Web.HttpForbiddenHandler" />
        </handlers>
    </system.webServer>

6voto

awe Punkte 21056

GUT. Ich habe das Problem herausgefunden. Unter .NET 3 Dies wird in einem anderen Abschnitt der Datei web.config angegeben. Anstelle von <system.web><httpHandlers> ist es in <system.webServer><handlers> wie diese:

<system.webServer>
  <handlers>
    <add name="NoTxtAllowed" verb="*" path="*.txt" 
       type="System.Web.HttpForbiddenHandler" />
  </handlers>
</system.webServer>

Obwohl dies die Antwort ist, die mich überzeugt hat, habe ich die Antwort von Ahmad Mageed comme el Antwort, da er sie gegeben hat, bevor ich die Versionsinformationen für .NET 3 in meiner Frage hinzugefügt habe. Er wies mich auch auf die richtige Richtung, um die Lösung zu finden. Beachten Sie, dass seine Antwort für alle Versionen von .NET vor 3 korrekt ist.

EDITAR: IIS 7.0 unterstützt 2 Modi: Integriert und Klassisch. Integriert ist der Standardmodus für ASP.NET-Anwendungen auf IIS 7.0, die Handler benötigen, die in <system.webServer>/<handlers> 代わりに <system.web>/<httpHandlers> (dies wird vom klassischen Modus und früheren IIS-Versionen unterstützt).

Hilfreiche Links zu diesem Thema:

2voto

Colin Punkte 10540

Dies ist etwas, das Sie im IIS einstellen, aber es sollte bereits standardmäßig vorhanden sein.

0voto

Mark Redman Punkte 23261

Können Sie diese in .config? oder .aspx? ändern?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X