隐藏页面源中的值,但显示在页面上

时间:2013-03-01 23:29:00

标签: html obfuscation

我希望能够在页面上显示一些值,但在页面源中隐藏它们。我很确定这是不可能的,但我想我会问。

修改

我正在编写自己的验证系统,以防止黑客/垃圾邮件发送者。我在传递数据时使用加密,但原始值当前可以在页面源中查看(因此有人可以在源上编写循环并提取数据)。

5 个答案:

答案 0 :(得分:1)

正式根据您的代码不包括javascript:否......

但是,可以在加载后写入DOM,但最终可能无法达到你想要的效果。

您可以这样做:

<div id="something">

</div>

然后在页面加载时使用页脚中的javascript来注入该div的值:

<script type="text/javascript">
    document.getElementById("something").innerHTML = "This is a previously hidden value";
</script>

这将在加载后将其写入dom,而不是将其写入页面源。真正的问题是你究竟想做什么?如果你想完全隐藏某些东西,那么这只会带来不便。任何想要钻出来的人都可以跟踪它。

如果您根据自己的真实意图更新问题,那么我们可能会提供更好的解决方案。

修改

根据您的编辑,您希望验证系统不显示原始值。 一种选择是将值存储在数据库中,并仅将行的引用ID传递给表单,假设这是您的意思。您可以在服务器端执行所有处理,并最大限度地减少传递给客户端的敏感数据量。

答案 1 :(得分:1)

执行此操作的方法是在页面上放置<div id='fillme'>(或其他一些容器),然后使用AJAX在页面加载后使用信息填充它。这样,当有人点击“查看源代码”时,他们会看到加载的html(或php或其他)文件的内容,而不是javascript运行后的最终结果。 jQuery具有很棒的AJAX功能,你最终会得到这样的代码:

$.ajax({
    type: 'POST',
    url: '/server/side/script.php',
    dataType: 'json',
    data: { thing: value, thing2: value },
    async: false,
    success: function(data) {
        $('#fillme').html(data);
    },
    error: function() {
        alert('oops');
    }
});

答案 2 :(得分:1)

直接答案是否定的,这是不可能的 - 因为浏览器必须接收它想要显示的任何内容。

话虽如此,根据您的意图,有一些方法可以向页面显示内容但是将其隐藏在源代码中。

这是个问题的一个常见地方是您希望隐藏在垃圾邮件中的电子邮件,但需要向您的用户显示 - 如果是这种情况(或类似情况),我提出了几个解决方案:< / p>

  1. 使用HTML字符实体来掩盖文字:请参阅here

  2. 使用Javascript动态生成

  3. 使用HTML编码: Here是一个不错的工具。

  4. 使用SilverLight等插件与DRM: See Here

  5. 提供图片(请注意,有些垃圾邮件知道如何使用OCR)

  6. 使用类似reCaptcha mailhide

  7. 的内容

    在一天结束时,用户几乎肯定能够复制你想要隐藏的任何内容 - 但如果你只是想防御垃圾邮件或自动化工具,那么这些选项之一可能会为你工作。

答案 3 :(得分:0)

由于页面源是浏览器需要在页面上生成所有内容的所有数据,因此不可能没有。

当然,您可以显示图像而不是值,不能直接从源代码中读取。或者使用html5画布或其他东西。

答案 4 :(得分:0)

不幸的是,这个问题的答案很简单,你不能。已经提出了各种方法,但是所有这些方法都很容易被规避。最后,确保没有人可以窃取你的源代码的唯一确定的方法是永远不要把它放在互联网上。