【问题标题】:Deny code execution IIS7 with web.config使用 web.config 拒绝代码执行 IIS7
【发布时间】:2011-04-10 19:03:20
【问题描述】:

我想阻止用户在 Web 应用程序的上传文件夹 (/assets/public/) 中运行特定扩展程序。用户可以上传图像文件,这些文件在上传过程中也会重新调整大小。但为了更安全,我想拒绝像 aspx、asp、php 这样的脚本......

我的当前代码会阻止每个扩展名,但我想允许像 .jpg 这样的扩展名:

<location path="assets/public">
    <system.web>
        <authorization>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

此外,用户没有 FTP 访问权限,并且应用程序是预编译的。

【问题讨论】:

  • 您是指托管案例吗?当用户使用本地 Web.config 注册自己的扩展来使用?
  • 用户仅授予资产/公共文件夹的上传权限,并且客户没有 FTP。我不希望用户或黑客能够运行远程脚本。
  • 请发布一些用户假定的黑客配置

标签: asp.net iis-7 web-config authorization iis-7.5


【解决方案1】:

试试

<httpModules>
    <clear />
</httpModules>

<location path="." inheritInChildApplications="false">
</location>

【讨论】:

  • “已检测到不适用于集成托管管道模式的 ASP.NET 设置。”第一个选项后出现错误,第二个选项不起作用。
  • @Hasan:关于第一个问题,请参阅 this qeestion
【解决方案2】:

这是我使用 global.asax 和路由解决这个问题的方法。刚刚添加了这些规则:

routes.MapPageRoute("any", "assets/public/{file}.{ext}", "~/e/404.aspx");
routes.MapPageRoute("any-sub","assets/public/{sub}/{file}.{ext}","~/e/404.aspx");

routes.Ignore("{any}.jpg");
routes.Ignore("{any}.png");
routes.Ignore("{any}.gif");
routes.Ignore("{any}.pdf");

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 1970-01-01
    • 2015-12-23
    • 2020-11-25
    • 1970-01-01
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多