我有一个展示画廊的网站。用户可以从web上传他们自己的内容(通过输入URL),也可以通过从他们的计算机上传图片。
我将URL存储在数据库中,这对于第一个用例很好,但如果用户从他们的计算机进行上传,我需要弄清楚在哪里存储实际的图像。
这里有没有关于我应该把它们存储在哪里的建议或最佳实践?
我应该将它们保存在appdata还是content文件夹中?它们是否应该根本不存储在网站中,因为它是用户内容?
发布于 2010-12-27 06:31:52
您不应将用户上传的内容存储在站点结构中可由已知URL直接访问的任何地方。这是一个安全风险,因为用户可能会上传.htm文件和.js文件。即使是具有正确扩展名的文件也可能包含恶意代码,这些恶意代码可由经过身份验证的用户在您的站点上下文中执行,从而允许服务器端或客户端攻击。
例如,请参阅http://www.acunetix.com/websitesecurity/upload-forms-threat.htm和What security issues appear when users can upload their own files?,它们提到了在允许用户上传文件并在您的站点中提供下载之前需要注意的一些问题。
structure
发布于 2011-10-17 23:37:37
根据您实现此类操作所需的资源,将所有这些内容存储在亚马逊S3中是非常有益的。
一旦你得到上传,你只需将它推送到亚马逊,并在数据库中弹出URL,就像你对其他图像所做的那样。如上所述,在发送之前打开图像并调整其大小可能是明智的。这既可以检查它实际上是一张图像,又可以确保您不会意外地向最终用户呈现完全相机分辨率的图像。
如果您曾经需要迁移/故障转移您的站点,并且不想同步千兆字节的映像资产,那么现在这样做将使它变得非常容易。
发布于 2011-10-11 21:08:58
一种方法是使用varbinary字段将图像存储在数据库表中。
另一种方法是将图像存储在App_Data文件夹中,并为每个用户创建一个子文件夹(~/App_Data/userid/myImage.png)。
对于这两种方法,您都需要创建一个单独的action方法,以便能够访问图像。
https://stackoverflow.com/questions/4535627
复制相似问题