Как запретить анонимным пользователям доступ к файлу с помощью проверки подлинности с помощью форм? - PullRequest
1 голос
/ 23 марта 2012

Мы используем аутентификацию по формам для аутентификации пользователей.В нашем приложении есть страница для загрузки exe.

Когда я отлаживаю код в visual studio, он позволяет загружать файл только зарегистрированным пользователям.Когда другие пользователи пытаются загрузить файл, они автоматически перенаправляются на страницу входа в систему.

Но когда я запускаю это из виртуального каталога, все пользователи (вошли в систему или нет) могут загрузить файл с помощьюдоступ к прямому пути, например http://testappln/foldername/test.exe.

Как предотвратить доступ неавторизованных пользователей в этой ситуации?

Ответы [ 2 ]

3 голосов
/ 23 марта 2012

Одна из возможностей - поместить файл в папку 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>
1 голос
/ 09 февраля 2013

очень простой подход - использовать IIS для предотвращения анонимного доступа к папке.просто откройте IIS, выберите свой сайт и выберите папку, в которой вы хотите его защитить.После выбора папки дважды щелкните Аутентификация (в разделе IIS) на странице Аутентификация, чтобы отключить анонимную аутентификацию.К настоящему времени только пользователи, прошедшие аутентификацию на вашем сайте, могут получить доступ к выбранной вами папке.

...