我正在使用asp.net,我的用户需要将私有图片上传到我的服务器。这些图片无论如何都无法传播,所以我需要以某种方式保护它们。什么是保护他们免受公共使用的最简单方法,只有授权用户才能联系到他们?
谢谢!
答案 0 :(得分:8)
您希望公众能够查看图片,但是下载它们会更难吗?
如果是这样,您可以查看the way Flickr does it,以了解任何选择不允许下载的人。它们在真实图像的顶部放置一个透明的GIF图像,以防止通过右键单击来下载图像。
下载它们仍然非常容易,因为根据经验,公众可以查看任何内容,它们可以保存到硬盘上。因此,我认为阻止公开可见材料下载的尝试相当无效;而且大多只是违反了可用性。也许你应该考虑合法途径而不是混淆;明确说明您的版权声明和任何您想要的许可证,并准备好追捕窃取他们的任何人。
您是否允许人们查看和下载您网站上的图片,但不是要将其与其他网站进行热链接?
如果是这样,关键是检测发送的引用(sic)标头,如果引用者不匹配则拒绝图像。请注意,如果引用者为空白,则默认情况下您必须信任它,因为即使在您自己的页面上查看,很多人的浏览器也不会发送引用者。
这通常在服务器指令中完成;如果您使用的是Apache,那么就可以in an .htaccess file using mod_rewrite directives。但是,如果您使用的是IIS,那么我不太清楚these instructions may or may not help。
或者,您想阻止公众查看它们吗?如果是这样,您只需要在您使用的任何服务器上使用访问控制 - 这里是access control instructions for IIS。
答案 1 :(得分:4)
使用asp.net处理程序而不是直接提供图像。这样,您可以在提供图像时对授权进行精细控制。
此外,将图像保留在公共文件夹之外,因此用户无法下载它们,即将它们存储在网站文件夹之外或数据库中。
请查看此处以获取有关处理程序的更多信息:http://www.wrox.com/WileyCDA/Section/id-291916.html。两个样本都提供图像,但它们专注于非常特定的场景。正如您在其中所看到的,您可以完全控制在那里实现的逻辑,因此您可以检查请求图像的用户是否有权下载指定的图像。
答案 2 :(得分:1)
您可能希望查看此问题以获取一些想法: secure images against static requests