作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 FileUpload
在我的项目中。而且这个项目的访问量会很高(这不是我的野心,只是因为 Web 应用程序确实与支付系统一起工作,这就是为什么它会处于高负载状态)。我想知道,存储用户文件有什么更好的方法?我的项目基于 ASP.NET .
我建议两种变体:
<user_files> ::= ( <id ::= int, primary_key, auto_increment, indexed><user_id ::= int><file_guid ::= varchar(255)>) | nil
最佳答案
securing correctly the access of files
如果您遇到这种情况,您已经违反了 OWASP 安全准则,因为您的文件是 insecure direct object references .这意味着用户可以直接访问文件,因为您在 IIS 上打开了一个完整的子文件夹(如 www.mysite.com/files/some_file.pdf)并且您的文件可能有一个名称。
你应该做的是:
在数据库中注册一个具有唯一性的文件;不是它的数据,只是它的名称和上传它的用户(可选地包括权限或角色)。 将文件存储在磁盘上,其中文件名是数据库标识符。 不允许直接访问,而是编写一个特殊的 HttpHandler 来接收文档的 id(就像在数据库中存储文件时所做的那样)。
采用这种方法时,您可以实现以下目标:
文件具有唯一编号,可防止它们在磁盘上发生命名冲突。 HttpHandler 可以检查下载该文件的用户的数据库是否具有这样做的适当权限。 因为使用了 ID,所以您不容易受到规范表示攻击,攻击者会执行如下请求: www.mysite.com/file.ashx?file=..\web.config
.
因此,从安全角度来看,将文件存储在磁盘而不是数据库上是没有问题的。
关于asp.net - 将上传的文件作为 BLOB 存储在 DB 中或有限制的文件夹中,哪里更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16344454/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!