允许用户使用远程图像URL作为阿凡达是否是个好主意?

时间:2015-02-23 13:28:59

标签: html image security avatar

我正在开发用户将拥有个人资料页面的在线社区,在那里他可以上传他选择的图像或提供远程图像的网址。

那么只存储远程图像网址而不是图像本身并在这样的配置文件页面上像这样使用它

<img src="remote_image_url">

或从远程网址下载图片并将其存储在本地/我们的服务器上以供以后使用

<img src="path_on_our_server">

我正在从hack-proffing的角度思考,如果我允许用​​户使用远程映像并使用它而不是将其下载到我们的服务器上,那么会出现任何问题吗?

3 个答案:

答案 0 :(得分:2)

您应该存储图像,加载一个您无法控制的远程URL始终是危险的。

扩展:

用户将其头像添加为www.example.com/pic.jpg。然后他们会注意到您只是在您的网站上包含该网址,因此他们将其头像更改为www.example.com/hack.js并且您仍然包含此文件,因此现在他们在该网站上添加的任何JS都将在其网站上运行。

像这样的嵌入式JS包含是黑客的梦想,并且绝对是一个巨大的安全漏洞。如果你想读一下这些攻击之一的真实例子,去年ebay被一个人抓住了 - http://www.infosecurity-magazine.com/news/ebay-under-fire-after-cross-site/

答案 1 :(得分:2)

考虑一下你试图减轻的风险。

无论您是让用户将图片上传到您的网站还是添加指向远程图片位置的链接,坏人都会做坏事。如果您让人们将图像上传到您的服务器,可能会有针对您的服务器的攻击媒介(由故意格式错误的图像触发的图像处理库中的漏洞)。如果你让人们添加到远程图像的链接,远程图像可能是恶意的,目标浏览器漏洞(然后你的网站似乎托管了恶意图像)。

如果您关心上传不合适的个人资料图片的人,那么您需要某种活跃的策展。

Gravatar服务专门提供个人资料头像图片,并拥有“警察”头像内容的服务条款小组。

http://gravatar.com

答案 2 :(得分:1)

通过在代码中使用用户的头像网址,您实际上也会让所有访问者都访问该用户的网站。用户将能够跟踪谁查看图像以及何时查看。

这几乎就是分析工具的工作原理。通过从第三方网站请求资源,第三方可以跟踪您的用户。