Белорусская цифровая библиотека





Сегодня в номере

Новости
  • altWebDeveloper #4
  • ASP.NET Developer Kits
  • Google остается лидером поиска в интернете
  • Microsoft открыла Hotmail для легального спама
  • Стартовал восьмой Российский интернет-форум
  • Новый российский сервис для пересылки файлов без электронной почты
  • Немецкая программа для обхода блокираторов рекламы
  • Конкурс для разработчиков .NET!
  • Новости .NET
  • "Десерт": Microsoft запатентовала яблоки
    Microsoft .NET
  • Доступ к файлам
  • Использование «ASP:XML runat=server> внутри страницы ASP.NET
  • Как сохранить позицию скроллинга странице после PostBack
  • Использование Microsoft Visual Studio .NET
  • Как создать решение с компонентами, написанными на разных языках
  • Вопросы и ответы конкурса разработчиков .NET
  • Visual Studio для "бедных"
  • ASP .NET Web Matrix
  • C# - инструмент разработки SharpDevelop
    Web-promoting
  • Стратегии позиционирования сайта в поисковых системах
  • Глоссарий терминов по поисковым системам
  • Что такое Robots.txt?
  • Трафик от ссылающихся сайтов
  • Анализ спроса и повышение видимости в поисковых машинах
  • Богатые и бедные проектовладельцы
  • Поисковые системы в интернете
  • Как выбрать поисковую машину
  • Как сделать веб-сайт эффективным
    .NET on-line
  • Англоязычные сайты
  • Русскоязычные сайты
  • Обмен ссылками
    Для души
  • Брюс Стерлинг
    Наш нейронный Чернобыль


    Рассылка журнала

    Рассылки@Mail.ru
    Новости altWebDeveloper

    © 2004 CAS "altDesign"
    Все права защищены

  • ..: altWebDeveloper - сетевой журнал для вебмастеров
    и разработчиков Microsoft .NET :..

    ..: Доступ к файлам.
    Как предоставить файл только зарегистрированному пользователю? :..



    Автор: Федор Сойкин
    Источник: GotDotNet.RU

    Допустим, что файл хранится в недоступной пользователю папке.
    И пользователю предоставляется подобным запросом:
     
    http://site.ru/MyApp/GetFile.aspx?FileName=file.dat
     
    Создадим HttpHandler:
     

    public class MyHttpHandler : IHttpHandler 
    {
    public bool IsReusable { get { return true; } }
    public void ProcessRequest( HttpContext context )
    {
    // получаем из запроса имя файла
    string strRequestedFile = context.Request.QueryString[ "FileName" ];

    // открываем файл с полученным именем
    FileStream stmFileStream = new FileStream( @"D:\MySecureFolder\"+ _
                    strRequestedFileName, FileMode.Open );

    // заполняем буфер содержимым файла
    byte[] buffer = new byte[ stmFileStream.Length ];
    stmFileStream.Read( buffer, 0, buffer.Length );
    stmFileStream.Close();

    // отправляем содержимое буфера клиенту
    context.Response.ContentType = "application/octet-stream";
    context.Response.OutputStream.Write( buffer, 0, buffer.Length );
    } // ProcessRequest
    } // MyHttpHandler</FONT>

     

    Затем, в web.config, укажем:

    <configuration> 
    <system.web>
    <httpHandlers>
    <add verb="GET" path="GetFile.aspx" type="MyHttpHandler, MyAssembly"/>
    </httpHandlers>
    </system.web>
    </configuration>

     

    При использовании приведенной выше информации, следует учитывать:


    • Необходимо проверять имя файла в запросе. В приведенном примере злоумышленник может использовать в запросе конструкции типа "..\..\" и, таким образом, потенциальную возможность получить несанкционированный доступ к ресурсам сервера.
    • Свойство Response.ContentType. Его значение зависит от того, что Вы собираетесь передавать.
    • Необходимо обрабатывать исключения, связанные с открытием файла. Стоит подумать о размещении операторов работы с файлом в using-блоке.
    • Следует учитывать размер данных передаваемых клиенту. В случае если размер значительный, стоит передавать данные не целиком, а частями.
    • Свойство IsReusable указывает среде исполнения на возможность повторного использования обработчика запросов. То есть, когда придет следующий запрос, среда не будет создавать новый объект MyHttpHandler, а использует этот-же повторно.
    • Элемент "httpHandlers/add" добавляет обработчик HTTP-запросов. В данном случае все GET-запросы на файл GetFile.aspx будут перенаправляться указанному обработчику. И не важно, существует ли этот файл на самом деле.



    При перепечатке любого материала с журнала или с сайта, видимая ссылка на источник http://altwebdeveloper.nm.ru и все имена, ссылки авторов обязательны.

    © 2004 CAS "altDesign"
    © Валерий В. Макеев (deepInfinity)



    @ library.by