是否可以将二进制图像数据放入 html 标记中,然后在任何浏览器中照常显示图像?

新手上路,请多包涵

这是一个重要的安全问题,我相信这应该是可能的。

一个简单的例子:

您运行社区门户。用户注册并上传他们的照片。只要允许显示图片,您的应用程序就会提供安全规则。比如用户必须是系统双方的好友,才能查看别人上传的图片。

问题来了:有可能有人爬取了你服务器的图片目录。但是您想保护您的用户免受此类攻击。

如果可以将图像的二进制数据直接放入 HTML 标记中,则可以将图像目录的用户访问权限限制为用户,并将运行的 Web 应用程序分组,并将图像数据直接传递给 Apache 用户和组HTML。

那么唯一可能的弱点就是运行您的网络应用程序的用户的密码。

已经有可能了吗?

原文由 Joern Akkermann 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 464
2 个回答

在其他答案中描述了其他(更好的)方法来保护您的文件,但是可以将图像嵌入到您的 html 中。

以这种方式使用 <img> 标签:

 <img src="data:image/gif;base64,xxxxxxxxxxxxx...">

其中 xxxxx... 部分是 gif 图像数据的 base64 编码。

原文由 bmb 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果我的图像目录需要安全性,我根本不会公开该目录。相反,我的 img src 属性将引用一个将用户 ID 和图像 ID 作为参数的页面。

该页面将验证该用户确实有权查看该图片。如果一切正常,请将二进制文件发回。否则什么都不发送。

例如:

 <img src="imgaccess.php?userid=1111&imgid=223423" />

另外,我不会使用可猜测的 ID。而不是坚持使用 base 64 编码的 guid 之类的东西。

原文由 NotMe 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题