Javascript rails中的图像保护

Javascript rails中的图像保护,javascript,jquery,ruby-on-rails,image,Javascript,Jquery,Ruby On Rails,Image,我正在寻找保护我的产品图像的方法,我不知道是否有比我已经找到的更好的方法:禁用右键单击,在图片和水印前使用透明图像。显然没有一个是完美的,但我很好奇是否有人能想出更好的解决方案 还有什么rails插件可以帮助实现这一点吗 谢谢你根本无法做到这一点,那就是抽烟 当您在网站中使用图像时,它们会下载到客户端,并且可以在缓存中找到,即使您试图阻止用户右键单击并保存图像 他们甚至可以查看您的html/css/javascript,找到您图片的位置并将其放在地址栏中。我真的非常讨厌阻止鼠标右键单击。这让我想

我正在寻找保护我的产品图像的方法,我不知道是否有比我已经找到的更好的方法:禁用右键单击,在图片和水印前使用透明图像。显然没有一个是完美的,但我很好奇是否有人能想出更好的解决方案

还有什么rails插件可以帮助实现这一点吗


谢谢

你根本无法做到这一点,那就是抽烟

当您在网站中使用图像时,它们会下载到客户端,并且可以在缓存中找到,即使您试图阻止用户右键单击并保存图像


他们甚至可以查看您的html/css/javascript,找到您图片的位置并将其放在地址栏中。

我真的非常讨厌阻止鼠标右键单击。这让我想起了九十年代,当你们用鼠标右键点击时,你们会得到一条信息,那个就是这个网站是被禁止的


你不能保护你的照片。对我来说,最好的办法就是放一些版权信息,仅此而已

你无法阻止人们在互联网上搜刮图像,所以不要浪费时间尝试。取而代之的是,在图像下面使用措辞强烈的版权信息组合,并且只在服务器上存储低分辨率的文件

对于我在Rails中创建的一个摄影网站,我在原始高分辨率照片生成了一些较小的缩略图后,用回形针将其丢弃。将其与图像一角的水印相结合,您应该有足够的资源来窃取高质量的图像,同时不会给用户带来不便


坦白地说,如果我访问你的网站,而你禁用了右键单击,我会在几秒钟内离开。

看看像iStockphoto.com这样的商业图像供应商是如何保护他们的图像的,看看这是否符合你的需要。

我正在寻找类似的东西,但是随机图像。我没有发现任何东西,所以我想我会在这里贡献自己的力量

我的最后一个解决方案,使用签名,是可以在这里应用的东西,虽然有一些修改,我也包括在底部

我们至少应该区分两件事:

A.阻止某人从其浏览器中保存图像

B.防止有人编写脚本自动删除你的所有图像

解决: A. 几乎不可能,也不是你想要的。想象一个网站,当你试图用它本来应该被使用的方式使用浏览器时,它会困扰你。对,你会不高兴的。对于想要保存图像的人来说,有完全合理的理由,最基本和最令人满意的理由是将其用作电脑或手机上的壁纸

最好的解决方案是包含水印。这样,人们就可以记住这些图像的来源,并且仍然可以将它们用于私人用途

我认为这条一般规则适用于互联网:如果你不希望它在你的控制之外传播,并且你获得了信用:不要把它放到网上

B 这是一个不太好的场景。我曾经做过一件最基本的事情,让翻录图像变得更加困难,那就是。使用不可预测的URL访问图像和b。在服务器上创建一个脚本,调用该脚本时将从文件系统获取一个映像,然后输出该映像。例如:http://example.com/some_image.php 代码非常简单:

<?php
$name = './img/ok.png';
$fp = fopen($name, 'rb');

header("Content-Type: image/png");
header("Content-Length: " . filesize($name));

fpassthru($fp);
资料来源:

所以我曾经做过一次,我创建了一个如上所述的脚本,但在其中添加了一个计时选项,以便在10秒内从同一个会话调用它两次将返回相同的图像。这样,一个自动脚本每10秒只能运行一个图像。此外,还可以使url包含某种时间戳哈希:

http://example.com/some_image_$md5Time.now+secret_Time.now.png,例如:

`

要检查是否允许提取图像,请执行以下操作:

获取请求的文件名,去掉“some_image”,然后删除md5散列。然后检查给定的时间“1396723820”是否在现在之内,10分钟内允许波动。然后检查该时间戳+secret的哈希是否正确

您可以将其视为数字通信中有时使用的一种签名,尽管它非常基本,也不是很强

将此方法用于生产图像可能是这样的:

http://example.com/some_image$md5$image\u id,secret,$timestamp\u$image\u id\u$timestamp.png

$image\u id这里是图像文件名、数据库中产品id等的某种静态标识符


如果我认为这会使预测文件路径变得更加困难,请纠正我的错误。最后,创建加密模式的第一条规则是不要这样做。第二个也是。但这是一个相当无辜的玩弄者。

没错,但有总比没有好,它至少会阻止一些人
用户这样做只会给自己一种虚假的安全感。你最好的办法是给它们加水印,因为如果图像被重复使用,这将赋予源属性,前提是你在实际产品上加水印。有了Photoshop CS5中那支奇特的新内容感知修复画笔,我不确定甚至在产品上加水印都会有帮助。。。