leo*_*ora 40 security asp.net-mvc storage image
我有一个显示画廊的网站.用户可以从Web上传自己的内容(通过输入URL)或从他们的计算机上传图片.
我将URL存储在数据库中,该数据库适用于第一个用例,但是如果用户从他们的计算机上传,我需要找出存储实际图像的位置.
这里有什么建议或我应该存储这些的最佳实践吗?
我应该将它们保存在appdata或内容文件夹中吗?它们是否应该与网站一起存储,因为它是用户内容?
Ian*_*cer 62
您不应将用户上载存储在可由站点结构中的已知URL直接访问的任何位置.这是一种安全风险,因为用户可以上传.htm文件和.js文件.即使是具有正确扩展名的文件也可能包含恶意代码,这些代码可以由经过身份验证的用户在您的站点上下文中执行,从而允许服务器端或客户端攻击.
例如,请参阅http://www.acunetix.com/websitesecurity/upload-forms-threat.htm以及用户上传自己的文件时会出现哪些安全问题?其中提到了在允许用户上传文件然后在您的网站中下载文件之前需要注意的一些问题.
不要将文件放在正常的网站目录结构中
请勿使用用户提供的原始文件名.您可以使用原始文件名添加内容处置标头,以便它们可以将其作为相同的文件名再次下载,但服务器上的路径和文件名不应该是用户可以影响的内容.
不要信任图像文件 - 调整它们的大小并仅为后续下载提供调整大小的版本
不要相信mime类型或文件扩展名,打开文件并对其进行操作以确保它是声称的.
限制上传大小和时间.
根据您必须实现此类资源的资源,将所有这些内容存储在Amazon S3中是非常有益的.
上传后,只需将其推送到亚马逊,然后在处理其他图片时弹出数据库中的URL.如上所述,打开图像并在发送之前调整大小可能是明智之举.这两个都检查它实际上是一个图像,并确保您不会意外地向最终用户呈现完整的相机分辨率图像.
如果您必须迁移/故障转移您的站点并且不想同步千兆字节的图像资产,现在执行此操作将使这一过程变得更加容易.
归档时间: |
|
查看次数: |
11315 次 |
最近记录: |