如何从任何URL中安全代理图像并避免利用



我想从我网站上的任何其他网站上代理图像,例如:

http://example.com/image?url=xxx

XXX是网络上任何图像的URL,很可能是Twitter,Facebook或其他社交网络的图像。

我该如何安全地执行此操作,

  • 避免是开放的重定向(即停止黑客尝试使用http://example.com/images?url=http://SomeHackerWebsite.com/steal_cookies_or_redirect
  • 之类的URL
  • 无论如何

我正在使用Java/Jersey/Jaxrs,并且正在考虑将响应媒体类型设置为image/*,但不确定这是否足够,因为我无法真正将任何URL放置,因为我可以't确定Twitter/facebook/等的最佳白名单

目前我已经在做以下操作:

  • 使用安全,http只有cookie,所以第三方javascript无法窃取我的网站cookie
  • 仅允许身份验证的请求
  • 签署请求,因此用户无法轻易解决彼此的请求,尽管这并不能阻止原始请求作为非图像内容的请求。

这是非常巨大而棘手的问题。我认为必须使用多种方法来安全。例如,返回base64而不是图像。还有一些缺点:

  • base64编码使文件大小大约比其原始二进制表示大约33%,这意味着更多的数据降低了电线(这可能在移动网络上非常痛苦)
  • IE6或IE7
  • 上不支持DATA URIS
  • base64编码的数据可能比二进制数据需要更长的时间来处理(有人想对此进行研究?)(同样,对于移动设备而言,这可能非常痛苦,而移动设备的CPU和内存更有限)(旁注:旁注:CSS背景图像实际上比IMG标签更快)

另一种方法是我们有标签系统!在此系统图像中,访问许多时间的访问和人类考虑的图像。

第三种方法是考虑请求的来源。如果您有可疑网站,则可以考虑这些网站引用的图像。

最新更新