从页面源中隐藏值,但在页面上显示
我希望能够在页面上显示一些值,但将它们隐藏在页面源中。林相当肯定这是不可能的,但我想我会问。从页面源中隐藏值,但在页面上显示
编辑
我写我自己的验证系统,以防止黑客/垃圾邮件发送者。我在传递数据时使用加密,但当前可以在页面源中查看原始值(因此有人可以在源代码上编写循环并提取数据)。
正式按你的标签不包括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传递给表单,假设这就是您的意思。您可以在服务器端执行所有处理,并将传递到客户端的敏感数据量减至最少。
由于页面源代码是浏览器需要生成页面上所有内容的所有数据,因此不可能。
当然,您可以显示图像而不是值,不能直接从源代码读取。或者使用html5画布或其他东西。
+1提HTML5的Canvas标签(可惜我没有足够的代表处实际+1你)。感谢您将在。 – hijinxbassist 2013-03-02 06:41:50
不幸的是,这个问题的简短答案是,你不能。已经有各种方法提出,但所有这些都很容易规避。最后,确保没有人能够窃取你的源代码的唯一可靠方法就是永远不要将它放到互联网上。
要做到这一点的方法是在您的页面上有一个<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');
}
});
由于将Ajax添加到答案列表中,Ajax已经完全融入到我的系统中。最终,这确实是解决方案的大部分答案的组合。谢谢 – hijinxbassist 2013-03-02 06:55:51
最直接的答案是否定的,这是不可能的 - 因为浏览器必须接收任何它打算显示。
随着中说,这取决于你的意图有办法来显示内容的页面,但隐藏在源。
这是一个问题的一个常见的地方是你想从垃圾邮件中隐藏的电子邮件,但需要显示给你的用户 - 如果这个(或类似的)是这种情况,我提出了几个解决方案:
使用HTML字符实体遮掩的话:见here。
使用JavaScript来动态地生成它
使用HTML编码:Here是一个很好的工具。
使用诸如SilverLight插件和DRM:See Here。
即成图像(注意,一些垃圾邮件机器人懂得使用OCR)
在这一天结束时,用户将几乎可以肯定能够复制不管它是你正在试图隐藏 - 但如果你只是想抵御垃圾邮件机器人或者自动化工具,这些选项之一可能为你工作。
我想感谢您抽出宝贵的时间来编译这个好的解决方案。尽管没有任何方法可以在网上获得充分的证据,但其中的一些是包中的一些不错的小技巧。如果我可以+1。再次感谢 – hijinxbassist 2013-03-02 06:49:43
在任何现代的浏览器称职的,所有动态DOM更新将“添加到源”,所有的实际目的。 – 2013-03-01 23:35:54
我更新了我的问题以更好地反映即时消息的内容。 这个解决方案听起来像是要走的路,但是源代码将在现代浏览器中更新?我很确定歌剧不更新来源。 – hijinxbassist 2013-03-01 23:44:01
@grant - 我可以接受,但参考可能会很好。我所有的ajax网站在这一点上都不会更新查看的源代码。希望他们仍然值得他们的盐。 – 2013-03-01 23:59:48