【发布时间】:2010-07-05 13:30:53
【问题描述】:
我开发了一个social networking site for gardeners 网站,并且有兴趣让用户能够将图像添加到他们的“推文”中。
如果我允许他们将图像上传到实际站点,这似乎很快就会变得昂贵(这是一个附带项目,除了我自己和我自己的痴迷之外,没有任何人资助)。假设该网站变得适度流行,有 10 万用户每周发布一张图片,大小只有 25 万。即 (100000 * .1 * 52 / 1024) = 508 MB/年的存储空间(这还没有考虑带宽的增加)。另外,我必须增加服务器负载来缩放图像。我不确定我是否应该继续这样做,或者是否有更好的可能性。
在某些方面链接到其他网站似乎更好。您确实有损坏的链接,但我更关心的是安全性:XSS。
应用程序在 Rails 3 上,使用 MongoDB / Mongoid 作为后端,如果这很重要的话。
我正在寻找解决方案,例如:
- 在外部站点上存储图像的 API。理想的情况是能够将其上传到我的站点,并进行 API 调用以将其存储在外部站点上。
- API(可能是 Javascript API)可以轻松安全地链接到一个或多个外部图像托管网站。
- Markdown 或允许安全链接到外部图像的类似标记。我有兴趣让用户能够以有限的方式格式化他们的帖子,所以这可能会同时解决两个问题。我注意到这就是 Stack Overflow 所做的。
- 将图像 URL 模式列入白名单的安全库
- 关于为什么我认为这个问题是错误的建议。例如,也许我应该只存储图像。每年 500MB 真的不算贵,它确实让我能够创造出非常干净的用户体验。
我的目标是(按顺序): - 安全,既适用于我自己的网站,也不允许针对其他网站的 XSS 攻击 - 最好的用户体验 - 易于维护和实施
为了在您的网站上允许用户提供图片,您做了哪些工作?
【问题讨论】:
标签: ruby-on-rails security image xss markdown