【问题标题】:Is it good idea to allow users to use remote image url as Avatar?允许用户使用远程图像 url 作为头像是个好主意吗?
【发布时间】:2015-04-24 20:13:43
【问题描述】:

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

所以只存储远程图像 url 而不是图像本身并像这样在个人资料页面上使用它是不是很好

<img src="remote_image_url">

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

<img src="path_on_our_server">

我是从破解的角度考虑的,如果我允许用​​户使用远程图像并按原样使用它而不是将其下载到我们的服务器上,会有什么问题吗?

【问题讨论】:

    标签: html image security avatar


    【解决方案1】:

    您应该存储图像,加载您无法控制的远程 URL 总是很危险的。

    展开:

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

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

    【讨论】:

    • 脚本hack.js 不会执行。当然,如果 url 没有经过净化,XSS 的可能性总是存在的,但这适用于任何用户内容。
    • 这取决于文件的布局,如果服务器上的软件不是最新的并且用户的浏览器不是最新的,您可以执行远程获取的脚本。诚然,由于 google 对它的限制,现在执行远程 JS 要困难得多,但它仍然绝对有可能。
    【解决方案2】:

    想想你正在尝试减轻哪些风险。

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

    如果您关心人们上传不合适的个人资料图片,那么您将需要某种形式的主动管理。

    Gravatar 服务专门托管个人资料头像图像,并有一个服务条款小组来“监管”头像内容。

    http://gravatar.com

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-05
        相关资源
        最近更新 更多