【问题标题】:How can we restrict the user from saving a web page?我们如何限制用户保存网页?
【发布时间】:2010-10-11 14:05:16
【问题描述】:

我们如何限制用户保存页面?

请提供一些提示来禁用文件->保存和查看源选项

编辑:显然它不能完成,并且可能不应该尝试。但可能这个问题的一个更有趣的变体是,我们如何才能使用户很难以可用的格式保存页面,以至于他们这样做不值得?这个问题没有任何价值,而是说我们正在保护一个文章订阅网站,用户每年要支付几百美元才能继续访问文本。

【问题讨论】:

  • 你想阻止什么?他们可以访问您的代码,或者您只是不希望他们在看到该页面后再次看到该页面?
  • 做不到。如果可以的话,你不应该这样做。
  • 我不敢相信这已经被投票了
  • 将其修改为更有趣、更合理的问题。
  • 比较合理?因为我不能阻止我的用户这样做,所以我想让它最大程度地烦人。我怎么做?如果您的业务要弄清楚如何最好地惹恼您的用户,您应该研究另一项工作。

标签: drm restriction


【解决方案1】:

由于页面已发送给客户端,因此总会有一种方法可以获取该信息。试图阻止用户这样做只会让他们感到沮丧。

让用户无法保存文件的唯一方法是不将其发送给他们。

【讨论】:

    【解决方案2】:

    虽然最好的答案是“不要这样做”,但还是有办法让他们更难做到。而且由于这个网站的重点实际上是回答问题,即使它很糟糕,这里是最好的方法:

    首先,您需要在新窗口中打开页面,在该窗口中关闭地址栏和工具栏以及其他所有内容。这将使用户根本无法轻易进入“文件”菜单。为此,您需要用户加载到的“启动”页面,然后当他们单击链接时,它会打开提供页面主要内容的弹出窗口。有关如何在没有工具栏之类的情况下创建弹出窗口的详细信息如下: http://blazonry.com/javascript/windows.php

    然后,您需要向每个页面添加一些 javascript,以防止用户右键单击。这是一种方法: http://javascript.about.com/library/blnoright.htm

    最后,如果您不希望看到您的 Javascript 代码,那么混淆您的代码是一种非常有效的方法。如果他们有很多专业知识,他们仍然可以看到代码,但是混淆的代码将是一个巨大的痛苦来实际解释。那里有很多混淆器。这是一个免费的基于网络的: http://www.javascriptobfuscator.com/

    这远非万无一失。它将阻止所有“临时”用户,但任何高级用户都可能能够轻松找到解决方法。不过,如果这个想法至少是为了防止大部分情况发生,那么这应该就足够了。

    更新问题: 为了解决您的新扩展问题,我想说完成您所说的最佳方法是使用支持 DRM 的格式。 Adobe Acrobat 可能是最佳选择,因为几乎每个人都安装了阅读器。您可以阻止将 PDF 文件保存到计算机,以便它们只能由登录用户从网页加载。用户仍然可以对文档本身进行屏幕截图,我认为这是无法避免的(除非 Adob​​e Reader 对此有一些安全措施,他们可能会这样做),但对于大多数用途来说应该足够安全。

    【讨论】:

    • 而使用 FireFox 的 Tools->Page Info 和 FireBugz,所有这些都是浪费时间。虽然我同意这个网站的目的是回答问题,但我也觉得给人们一种虚假的安全感是错误的。而且您根本没有解决缓存或屏幕截图。
    • 此外,您对周围的情况一无所知。如果客户要求他这样做怎么办?那么“正确”的方式是什么并不重要,他应该在解释他为什么认为这是一个坏主意之后做客户想要的。得到问题的答案是他应得的。
    • 但是您根本没有阻止他们保存文件。你只是假装你做到了。这就是为什么我说“浪费时间”和“虚假的安全感”。您可能已经解决了 OP 的确切措辞,但没有解决问题的明显含义和意图。
    • 您阻止了许多用户保存该页面。如果用户想要保存页面,尝试并由于这些技巧而失败,那么根据定义,您已经阻止该用户保存页面。正如我在回答中所说的那样,它不会阻止拥有专业知识的用户,但会阻止大多数用户。
    • 最后两点:如果他的客户要求这样做,他应该告诉他的客户不能这样做。其次,你会注意到,虽然我不同意你的观点,但我并没有说你错了,也没有投票给你。我只是指出您错误“解决方案”中的缺点。
    【解决方案3】:

    别这样。

    说真的,如果用户可以在他们的浏览器中看到该页面,他们就可以看到源代码和/或将其保存到他们的计算机上。

    你在这里打了一场失败的战斗。

    【讨论】:

      【解决方案4】:

      浏览器的缓存呢?可以从那里保存。

      打印屏幕怎么样?这也可以保存页面。

      阻止用户保存内容的唯一方法是一开始就不向他们显示。

      【讨论】:

        【解决方案5】:

        尝试在 html 中执行此操作确实是浪费时间和资源,因为您使用的任何方法都可以轻松绕过。

        相反,我会使用其他一些技术来显示数据 - 你永远无法绕过屏幕截图。但是,例如,如果您正在显示文本,并且您想让用户难以保存该文本以供其他地方使用,那么可能的选项包括

        1. PDF - 可以禁用保存和打印。大多数流行的网络语言都有扩展,可以即时编写 pdf。实际上,您可能还不如使用 Adob​​e 沿着 DRM 路线并嵌入文档

        2. Flash - 最有可能是通过 Flex 编写的通用应用程序来显示文本和图像。 Flash 的优点是设置链接比 pdf 更容易。

        3. 或者其他的东西,一个自定义的 java 小程序,甚至是一个 vrml 插件并以 3D 显示文本!

        在所有情况下,您都可以在破坏性背景下显示文本以使 OCR 更加困难,并且图像可能带有水印。然而,没有什么能阻止一个坚定而足智多谋的观众,尽管你可以让它变得足够困难以至于不值得他们花时间。

        【讨论】:

        • 我认为 PDF 建议是这个线程中最好的。我允许 OP 要求的控制。
        【解决方案6】:

        您至少可以做的是……内容是由 Javascript 动态生成的。这样一来,他们就不能简单地保存它。当然,在 FX 中,他们仍然可以查看生成的代码,然后复制粘贴。但是,通常人们无法保存页面。

        【讨论】:

          【解决方案7】:

          这应该不是问题,但是如果您出于某种原因确实不希望用户看到您的代码(javascript、css 或 html),那么您可以使用一些混淆工具来降低代码的可读性。

          【讨论】:

            【解决方案8】:

            尝试 javascript“编码”和混淆。

            类似

            if(document.location == 'mydomain.com') {
              content = getAjax('mycontent.xml');
              // content will hold something like 72, 94, 81, 99, ... - encoded ASCII codes
              document.write(String.fromCharCode(content));
            }
            

            总是可以保存页面,但对于非技术人员来说,保存页面会更难。 有2种保护

            • 域名
            • 转换 ASCII 码

            这只是伪代码,但我想你明白了。

            【讨论】:

              【解决方案9】:

              将这些添加到脚本标签中的代码集

              document.addEventListener('contextmenu', function (e) {
                              e.preventDefault();
              });
              
              document.onkeydown = function (e) {
                              return false;
              };
              

              【讨论】:

                【解决方案10】:

                我想再添加一种方法,恕我直言,很难规避:Ctrl+S! (对我来说,Apple+S)

                【讨论】:

                  【解决方案11】:

                  我们怎样才能让用户以可用的格式保存页面已经足够困难,以至于他们这样做是不值得的

                  没什么难的:在每一页上添加:“John Stealer 的个人财产,Zetabeta 公司,用信用卡 756890987654 支付,帐单地址......,订阅将于 12 月 20 日到期”。

                  这是我刚刚发明的“扩展文本格式”……它有一个惊人的特性:虽然它看起来像普通文本,但用户不太愿意将其打印出来并提供给其他人……

                  【讨论】:

                  • 太棒了。在每次请求时通过网络发送用户的信用卡信息。
                  • 您确实发送了他们通过 HTTPS 支付数百美元的页面,是吗?那么,反对票是怎么回事?
                  • 使用 https 会好一些。但我也不知道我是否希望我的浏览器缓存填满我的付款信息的未加密副本。一些 PDF 书籍的出版商使用这种方法的一个不太令人讨厌的变体。 pragprog.com 将您的电子邮件地址嵌入 PDF 的每一页。这没有风险,但效果几乎相同。
                  • 任何合理的浏览器都不会保存通过 https 传输的文档。当然,用户可以手动保存,但他不会这样做,原因很明显。我相信这就是你想要的,不是吗?当然,仅仅有一封电子邮件对你来说也可能足够有效。
                  • 更重要的是,现代操作系统可以将部分缓存标记为敏感,这样不仅浏览器不会将它们缓存在磁盘上,而且操作系统本身也不会交换磁盘上的敏感内存。如果这不是您的计算机的工作方式,您当然应该调查一下。
                  猜你喜欢
                  • 2010-11-25
                  • 2020-03-25
                  • 2012-01-01
                  • 2020-02-03
                  • 1970-01-01
                  • 2013-08-31
                  • 2021-04-15
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多