Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net “我怎么能?”;锁;用户购买之前的文件?_Asp.net_Security_Iis 7_File Upload_Asp.net 3.5 - Fatal编程技术网

Asp.net “我怎么能?”;锁;用户购买之前的文件?

Asp.net “我怎么能?”;锁;用户购买之前的文件?,asp.net,security,iis-7,file-upload,asp.net-3.5,Asp.net,Security,Iis 7,File Upload,Asp.net 3.5,我正在建立一个网站,用户可以购买MP3文件,他们可以从他们的用户登录区下载 在我以前开发的应用程序中,我允许管理员上传文件,并将其存储在“/Uploads/MP3s/filename.mp3”下。但是,我需要确保安全,以便用户在购买这些文件之前无法访问这些文件 做这件事的最好、最安全的方法是什么?你应该有一个数据库,用来存储哪个用户买了哪个mp3。上传的mp3不应存储在可公开访问的文件夹中。将它们存储在另一个文件夹中,然后是httpfolder,但请确保您的iis可以访问此文件夹。这样,没有人能

我正在建立一个网站,用户可以购买MP3文件,他们可以从他们的用户登录区下载

在我以前开发的应用程序中,我允许管理员上传文件,并将其存储在“/Uploads/MP3s/filename.mp3”下。但是,我需要确保安全,以便用户在购买这些文件之前无法访问这些文件


做这件事的最好、最安全的方法是什么?

你应该有一个数据库,用来存储哪个用户买了哪个mp3。上传的mp3不应存储在可公开访问的文件夹中。将它们存储在另一个文件夹中,然后是httpfolder,但请确保您的iis可以访问此文件夹。这样,没有人能猜到文件的路径,因为它不在http根目录下

使用下载页面检查下载权限,然后使用
Response.WriteFile(文件名)
和正确的mime类型等将mp3发送给用户

Protected Sub ServeMP3(ByVal f As FileInfo)
    Response.Clear()
    Response.ContentType = "audio/mpeg3"
    Response.AddHeader("content-disposition", "inline; filename=" & f.Name) 
    Response.WriteFile(f.FullName)
    Response.End()
End Sub

您可以使用“附件”强制下载文件,而不是“内联”(流式播放),您应该有一个数据库,用于存储哪些用户购买了哪些mp3。上传的mp3不应存储在可公开访问的文件夹中。将它们存储在另一个文件夹中,然后是httpfolder,但请确保您的iis可以访问此文件夹。这样,没有人能猜到文件的路径,因为它不在http根目录下

使用下载页面检查下载权限,然后使用
Response.WriteFile(文件名)
和正确的mime类型等将mp3发送给用户

Protected Sub ServeMP3(ByVal f As FileInfo)
    Response.Clear()
    Response.ContentType = "audio/mpeg3"
    Response.AddHeader("content-disposition", "inline; filename=" & f.Name) 
    Response.WriteFile(f.FullName)
    Response.End()
End Sub

您可以使用“附件”来强制文件下载,而不是“内联”(流式传输和播放),将其隐藏在可以检查请求有效性的HTTP处理程序、模块、Web服务或页面后面,然后流式传输文件或显示错误/重定向到购买页面


这样做的好处是可以完全抽象出文件的真实路径……通过模糊实现安全(:

将它们隐藏在HTTP处理程序、模块、Web服务或页面后面,该页面可以检查请求的有效性,然后流式传输文件或显示错误/重定向到购买页面

这样做的好处是完全抽象出文件的真实路径……通过模糊性实现安全(: