我正在建立一个网站,用户可以在其中购买可以从用户登录区域下载的MP3文件。
在我开发的先前应用程序中,我将允许管理员上传文件,它将存储在“/Uploads/MP3s/filename.mp3”下。但是,我需要使其安全,以便用户在购买这些文件之前无法访问这些文件。
这样做的最佳,最安全的方法是什么?
答案 0 :(得分:5)
您应该有一个数据库,用于存储哪个用户购买了哪个mp3。上传的mp3不应存储在可公开访问的文件夹中。将它们存储在另一个文件夹中,然后存储在httpfolder中,但请确保您的iis可以访问此文件夹。这样,没有人可以猜测文件的路径,因为它不在http-root下。
使用下载页面检查下载权限,然后仅使用Response.WriteFile(filename)
和正确的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
而不是“内联”(流和播放),您可以使用“附件”强制下载文件
答案 1 :(得分:3)
将它们隐藏在可以检查请求有效性的HTTP处理程序,模块,Web服务或页面后面,然后流式传输文件或显示错误/重定向到购买页面。
这样做的好处是可以完全抽象出文件的真实路径......通过默默无闻的安全性(: