如何防止匿名用户使用表单身份验证访问文件

本文关键字:表单 身份验证 访问 文件 何防止 用户 | 更新日期: 2023-09-27 18:28:51

我们使用表单身份验证来验证用户。在我们的应用程序中,有一个页面可以下载exe。

当我在visualstudio中调试代码时,它只允许登录的用户下载该文件。当其他用户尝试下载该文件时,他们会自动重定向到登录页面。

但是,当我从虚拟目录中运行该文件时,所有用户(无论是否登录)都可以通过访问http://testappln/foldername/test.exe这样的直接路径来下载该文件。

在这种情况下,如何防止未经授权的用户访问?

如何防止匿名用户使用表单身份验证访问文件

一种可能性是将文件放在禁止直接访问的App_Data文件夹中,然后使用通用ASHX处理程序读取文件内容并将其返回给客户端。然后,您可以将对该通用处理程序的访问权限限制为仅经过身份验证的用户:

<%@ WebHandler Language="C#" Class="Download" %>
using System;
using System.Web;
public class Download : IHttpHandler 
{
    public void ProcessRequest (HttpContext context) 
    {
        context.Response.ContentType = "application/octet-stream";
        context.Response.WriteFile("~/App_Data/test.exe");
    }
    public bool IsReusable 
    {
        get 
        {
            return false;
        }
    }
}

并且在web.config中限制对Download.ashx处理程序的访问:

<location path="Download.ashx">
    <system.web>
        <authorization>
            <deny users="?"/>
        </authorization>
    </system.web>
</location>

一个非常简单的方法是使用IIS来阻止对文件夹的匿名访问。只需打开IIS,选择您的站点并选择要保护它的文件夹。选择文件夹后,双击"身份验证"页面中的"身份验证(在IIS部分)"禁用"匿名身份验证"。到目前为止,只有经过站点身份验证的用户才能访问您选择的文件夹。