【问题标题】:image protection in rails导轨中的图像保护
【发布时间】:2011-02-13 06:32:48
【问题描述】:

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

还有任何 Rails 插件可以帮助解决这个问题吗?

谢谢

【问题讨论】:

    标签: javascript jquery ruby-on-rails image


    【解决方案1】:

    你根本无法做到这一点,那只是烟雾。

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

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

    【讨论】:

    • 是的,但有总比没有好,它至少会阻止一些用户
    • 这样做只会给自己一种虚假的安全感。最好的办法是给它们加水印,因为如果图像被重复使用,只要你在实际产品上加水印,这就是来源。
    • 有了 Photoshop CS5 中那款精美的新内容感知修复画笔,我不确定即使是产品上的水印也会有所帮助...
    【解决方案2】:

    我真的,真的很讨厌阻止鼠标点击。它让我想起了九十年代,当您单击鼠标右键时,您会收到禁止复制该网站的消息;)。

    您无法保护您的图片。对我来说,最好的方法就是放一些版权信息,仅此而已。

    【讨论】:

      【解决方案3】:

      您无法阻止人们在互联网上捏图片,所以不要浪费时间尝试。而是在图像下方使用措辞强硬的版权信息的组合,并且仅在服务器上存储低分辨率文件。

      对于我在 Rails 中构建的摄影网站,在生成一系列较小的缩略图后,我使用 Paperclip 将原始高分辨率照片丢弃。将其与图像一角的水印结合起来,您应该有足够的能力让窃取高质量的图像变得很痛苦,同时又不会给用户带来不便。

      坦率地说,如果我要访问您的网站并且您禁用了右键单击,我会在几秒钟内消失。

      【讨论】:

        【解决方案4】:

        了解商业图片供应商(如 iStockphoto.com)如何保护他们的图片,看看是否符合您的需求。

        【讨论】:

          【解决方案5】:

          我一直在寻找类似的东西,但是是随机图像。我没有找到任何东西,所以我想我会在这里做出贡献。

          我的最后一个解决方案是使用签名,可以在这里应用,尽管我在底部也包含了一些修改。

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

          A.防止有人在浏览器中保存图片。

          B.防止有人编写脚本自动翻录您的所有图像。

          解决方案:

          答。

          几乎不可能,也不是你想要的。想象一个网站,当您尝试按照您的预期使用方式使用您的浏览器时,它会给您带来麻烦。没错,你会不高兴。有人想要保存图片有完全正当的理由,最基本和最讨人喜欢的理由就是将其用作电脑或手机上的壁纸。

          最好的解决方案是添加水印。这样一来,人们就会被提醒图像的来源,并且他们仍然可以将它们用于私人事务。

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

          B.

          这是一个不太好的场景。我曾经做过的使翻录图像更难的最基本的事情是 a.使用不可预知的 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);
          

          来源:SO answer on the topic

          所以我所做的是我创建了一个类似上面的脚本,但在那里添加了一个计时选项,以便在假设 10 秒内调用它(从同一个会话)两次将返回相同的图像。这样,自动化脚本每 10 秒只能运行 1 张图像。此外,您可以使 url 包含某种时间戳哈希:

          http://example.com/some_image_$(md5(Time.now + "secret")_Time.now).png 例如:

          `http://example.com/some_image_aihfio1n...oi12nof_1396723820.png

          检查是否允许获取图像的方法是:

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

          您可以将其视为有时在数字通信中使用的签名,虽然非常基本且不是很强大或其他任何东西。

          对您的生产图像使用这种方法可能是这样的:

          http://example.com/some_image$(md5($image_id, "secret",$timestamp))_$image_id_$timestamp.png

          $image_id 这是您图像的某种静态标识符(文件名、数据库中产品的 ID 等)。

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

          【讨论】:

            猜你喜欢
            • 2013-01-21
            • 1970-01-01
            • 2019-12-26
            • 2014-07-08
            • 2017-04-04
            • 1970-01-01
            • 2011-07-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多