限制访问doc.net的doc文件

时间:2011-04-10 22:13:49

标签: asp.net security web-config global-asax

我的asp.net应用程序中有一个文件夹,其中包含某些类型的连接用户(管理员帐户或允许的其他帐户)只能访问(下载)的doc文件

我该怎么做?   任何想法?
  提前谢谢。

3 个答案:

答案 0 :(得分:1)

.NET中的App_Data文件夹受到保护,因此非常适合此目的。我通常将敏感文件放在这里,然后有一个页面“ViewDoc.aspx”执行安全检查,然后将文件发送给用户(使用Response.Write)。

答案 1 :(得分:1)

将敏感文件放在网站root之外,因此无法通过URL访问它们。

之后,使用此HttpHandler(用VB.NET编写)来提供文件:

Public NotInheritable Class FileHandler
    Implements IHttpHandler

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

    Public Sub ProcessRequest(ByVal context As System.Web.HttpContext) Implements System.Web.IHttpHandler.ProcessRequest
        If Not String.IsNullOrEmpty(context.Request.QueryString("FileName")) Then
            Dim fileName As String = context.Request.QueryString("FileName")

            Try


                Dim filesPath As String = "D:\TheFiles\"

                Dim fileInfo As New IO.FileInfo(filesPath & fileName)

                If fileInfo.Exists Then

                    Dim fileExt As String = fileInfo.Extension.Remove(0, 1).ToUpperInvariant


                    If fileExt = "JPG" Then
                        context.Response.ContentType = "image/jpeg"
                    Else
                        context.Response.ContentType = "image/" & fileExt
                    End If

                    context.Response.TransmitFile(fileInfo.FullName)

                End If

            Catch ex As Exception
            End Try

        End If
    End Sub

End Class

并在web.config中注册此处理程序,如下所示:

<httpHandlers>
        <add verb="*" path="secfile.axd" type="MyApp.FileHandler, MyApp" validate="false"/>
    </httpHandlers>

像这样使用:

<a href="secfile.axd?pic=sample.jpg" />

记住文件类型添加到处理程序,并按文件类型更改response.contenttype

使用处理程序不是唯一的方法,您可以在aspx文件中使用context.Response.TransmitFile(fileInfo.FullName)

答案 2 :(得分:0)

执行此操作的一种简单方法是不将这些文档放在ASP.NET应用程序的文件夹中,而是将其放在文件系统中无法直接从浏览器访问的其他位置。然后以编程方式,如果他/她有权这样做,您可以将文件提供给用户。