2

我正在使用 asp.net,我的用户需要将私人图片上传到我的服务器。这些照片无论如何都不会传播,所以我需要以某种方式保护它们。保护它们免受公共使用的最简单方法是什么,只有授权用户才能接触到它们?

谢谢!

4

3 回答 3

8
  • 您是否希望公众能够查看图像,但让下载它们变得有点困难?

    如果是这样,您可以研究Flickr 的做法,任何选择不允许下载的人。他们在真实图像的顶部放置一个透明的 GIF 图像,以防止通过右键单击它来下载图像。

    下载它们仍然很容易,因为根据经验,公众可以查看的任何内容都可以保存到硬盘中。因此,我认为阻止下载公开可见材料的尝试是徒劳的;而且大多只是对可用性的侵犯。也许您应该考虑法律途径而不是混淆;清楚地说明您的版权声明和您想要的任何许可,并准备追捕任何窃取它们的人。

  • 您是否希望允许人们从您的站点查看和下载图像,但不允许从其他站点进行热链接?

    如果是这样,关键是检测发送的referer(sic)头,如果referer不匹配,则拒绝图像。请注意,如果referer 为空,则默认情况下您必须信任它,因为很多人的浏览器合法地不发送referer,即使在您自己的页面上查看也是如此。

    这通常在服务器指令中完成;如果您使用的是 Apache,您将使用 mod_rewrite 指令在 .htaccess 文件中执行此操作。但是,如果您使用的是 IIS,那么我就不太清楚了,尽管这些说明可能有帮助,也可能没有帮助

  • 或者,您是否想完全阻止公众看到它们?如果是这样,您只需要在您使用的任何服务器上使用访问控制 - 这是IIS 的访问控制说明

于 2009-03-18T10:32:52.603 回答
4

使用 asp.net 处理程序而不是直接提供图像。这样,您可以在提供图像时对授权进行精细控制。

此外,将图像保留在公共文件夹之外,这样用户就无法下载它们,即将它们存储在网站文件夹之外或数据库中。

检查此以获取有关处理程序的更多信息:http ://www.wrox.com/WileyCDA/Section/id-291916.html 。这两个样本都提供图像,但它们都专注于非常具体的场景。正如您在其中看到的,您可以完全控制您在其中实现的逻辑,因此您可以检查请求图像的用户是否有权下载指定的图像。

于 2009-03-18T10:20:37.983 回答
1

您可能想查看这个问题以获得一些想法:针对静态请求的安全图像

于 2009-03-18T18:29:27.433 回答