0

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

编辑

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

4

5 回答 5

2

正式根据您的标签不包括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 传递给表单,假设这就是您的意思。您可以在服务器端进行所有处理,并最大限度地减少传递到客户端的敏感数据量。

于 2013-03-01T23:33:50.157 回答
2

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

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

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

  1. 使用 HTML 字符实体来隐藏单词:请参阅此处

  2. 使用Javascript动态生成它

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

  4. 使用带有 DRM 的 SilverLight 等插件: 请参阅此处

  5. 提供图像(注意,一些垃圾邮件机器人知道如何使用 OCR)

  6. 使用类似reCaptcha mailhide

归根结底,用户几乎肯定能够复制您试图隐藏的任何内容 - 但如果您只是试图防御垃圾邮件机器人或自动化工具,那么这些选项之一可能对您有用。

于 2013-03-01T23:39:30.203 回答
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');
    }
});
于 2013-03-01T23:37:01.053 回答
0

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

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

于 2013-03-01T23:32:24.280 回答
0

不幸的是,这个问题的简短答案是,你不能。已经提出了各种方法,但所有这些方法都很容易被规避。最后,确保没有人可以窃取您的源代码的唯一可靠的方法就是永远不要将其放到 Internet 上。

于 2013-03-01T23:32:27.290 回答