2013-11-11 3 views
0

Мне нужно заблокировать анонимный доступ к PDF, PPT, DOC, содержимое на сервере с помощью приложения, встроенного в .Net 1.1; IIS 5.1. Я попытался отключить анонимный доступ в IIS, но он не работает.Как защитить PDF-контент на сервере в .net 1.1 IIS5.1

+3

Я бы подумал, ваш первый приоритет будет обеспечить обновление. .NET 1.1 не поддерживает * расширенную поддержку *. IIS 5.1 выходит из расширенной поддержки через 6 месяцев. –

+0

Да, я понимаю, что мне нужно обновить, но пока оно не будет готово, мне нужно обеспечить мое содержимое ... Любое предложение будет очень полезно. – user2978889

ответ

0

Я знаю, что это старый пост, и, надеюсь, вы отключены .Net 1.1 и/или нашли подходящее решение. Но, надеюсь, это поможет вам или кому-то еще. Моя идея - переместить PDF-файлы за пределы вашей веб-папки и изменить ссылки на обработчик загрузки. В обработчике вы можете проверить, что ваш посетитель зарегистрирован и разрешает или запрещает доступ к PDF-файлу. упрощенный пример будет:

Ссылка: http://mysite/download.ashx?path=secure_folder/my.pdf

Обработчик может содержать:

Public Class Download : Implements IHttpHandler 
    Implements SessionState.IRequiresSessionState 

    Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
     If User.IsLoggedIn() Then 
      'implement your own user validation here 

      Dim path as String = "E:\" & Request.QueryString(path).Replace("/", "\") 

      Using fs As IO.FileStream = New IO.FileStream(path, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read) 

       Dim fileLen As Long = fs.Length() 
       Dim fileData(fileLen) As Byte 
       fs.Read(fileData, 0, Integer.Parse(fileLen.ToString())) 
       context.Response.ContentType("application/pdf") 'set as appropriate based on file extension 
       context.Response.BinaryWrite(fileData) 
      End Using 
     Else 
      context.Response.Write("You don't have access to this resource.") 
     End If 
    End Sub 

    Public ReadOnly Property IsReusable() As Boolean Implements IHttpHandler.IsReusable 
     Get 
       Return False 
     End Get 
    End Property 

End Class 
+0

Хорошая идея, но как насчет того, чтобы обработчик работал для больших файлов? Вы также захотите поместить этот «FileStream» в блок «Использование», если вы не хотите, чтобы я уменьшал его. –

+0

Спасибо, что поймали этого Джона. Мое форматирование пошатнулось при редактировании. Не знаю, почему. – InbetweenWeekends

+0

Нет нисходящего потока, но это не будет работать слишком хорошо для больших файлов. Умственно выполните этот код для файла 3Gb, и вы поймете, что я имею в виду (предоставление 3Gb будет представлять собой большой PDF). –

Смежные вопросы