【问题标题】:How to prevent image download from direct URL?如何防止从直接 URL 下载图像?
【发布时间】:2019-10-30 06:39:11
【问题描述】:

我是一名 ASP.Net 开发人员。作为网络安全模块的一部分,我被指示阻止从应用程序下载图像。我怎样才能做到这一点?有人可以指导我吗?

<img id="lg-P002" onclick="processselection('P002');" src="assets/images/processes/ActiveImge/P002.jpg" alt="P002">

我有一个带有一些图像的 img 标签和 当我将鼠标悬停在 img 标签的 src 属性上时,我可以查看图片“http://localhost:10350/assets/images/processes/ActiveImge/P002.jpg”的完整 URL

应该避免这种情况。应用程序用户不应复制完整的 URL 并下载源图像。

如何避免这种情况?

【问题讨论】:

  • "这应该避免。应用程序用户不应该复制完整的URL并下载源图像"为什么?
  • 应用程序用户不应通过URL访问应用程序中使用的图像。
  • 是的,但为什么不呢?另外,您的应用程序将如何访问图像?虽然技术上可以通过 JS 和 WebSockets 下载图像,但任何精通技术的人都可以复制您的 JS 并自己完成
  • 你期待什么?在图片显示的那一刻,用户的浏览器已经下载了图片。
  • 上述 cmets 的要点:您可以使下载它更难。你不能让它不可能。所以,是时候考虑一​​下这是否值得麻烦,以及要求是否有意义。

标签: c# asp.net


【解决方案1】:

如果这只是隐藏图像的 URL,而不是内容,一个选项是 embed the image as a Data URI

示例(来自Wikipedia):

&lt;img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" /&gt;

这仅适用于很少使用的较小图像,因为页面的带宽使用量更大。

有趣的是,它也可以在 CSS 中使用。

【讨论】:

  • 赞成,因为我认为 OP 的主要关注点是那个 URL。 OP:这仍然不能阻止有强烈意图获得图像本身的精明人士获得它。
  • 是的,乍一看,我正在考虑相同的解决方案。使用 base64 编码图像将隐藏 URL。
猜你喜欢
  • 1970-01-01
  • 2016-06-28
  • 2011-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-16
  • 2018-06-07
  • 1970-01-01
相关资源
最近更新 更多