如何从视图代码/检查元素浏览器中隐藏表单代码?
Posted
技术标签:
【中文标题】如何从视图代码/检查元素浏览器中隐藏表单代码?【英文标题】:How to hide form code from view code/inspect element browser? 【发布时间】:2014-08-10 18:28:36 【问题描述】:我想从查看代码/检查元素浏览器中隐藏表单代码,我该怎么做?
这是我的代码,请看下面:
<div style=" text-align: center; padding: 300px; font-family: lato; ">
Please wait redirect page ......<br>
<img src="http://maps.nrel.gov/sites/all/modules/custom_modules/hydra/assets/images/loading_bar.gif" border="0">
</div>
<form name="f1" action="payments.php" method="post">
<input type="hidden" name="id_crad" value="...">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="amount" value="12.99">
</form>
<script type="text/javascript">
setTimeout(function()f1.submit();, 3000);
</script>
请看图
【问题讨论】:
我认为这是不可能的,除非您使用的是编译语言(例如,Java Web 小程序、Flash [易于反编译] 等)。 你不能。谢天谢地。您真的想失去查看网站对您的影响的能力吗? 您可以通过不在任何网页中包含代码来轻松隐藏代码以防窥探。 RobG --- 请展示示例 你不能隐藏它,你的浏览器已经显示了它可以做什么。为什么不把这些值放在服务器上 【参考方案1】:你根本做不到。
代码检查器是为调试 html 和 JavaScript 而设计的。他们通过显示网页的实时 DOM 对象来做到这一点。这意味着它会显示您在页面上看到的所有内容的 HTML 代码,即使它们是由 JavaScript 生成的。一些检查员甚至在 Iframe 中显示代码。
用一些 JavaScript 来禁用键盘/鼠标交互怎么样...
有一些 JavaScript 技巧可以禁用页面上的某些键盘、鼠标交互。但是总是可以解决这些技巧。例如,您可以使用浏览器顶部菜单毫无问题地启用 DOM 检查器。
试试这些:
火狐:☰ > Tools > Web Developer > Inspector 铬:⋮ > More Tools > Developer Tools > Elements它们不在 JavaScript 的控制范围内。
大图
想一想:
-
网页上的所有内容都是由浏览器呈现的,因此它们的抽象级别低于您的 JavaScript。他们“守着所有的门,握着所有的钥匙”。
浏览器希望网站正常运行,否则用户会鄙视它们。
因此,浏览器希望使用代码检查器等工具向 Web 开发人员公开 everything 的较低级别的刻度。
基本上,浏览器是 JavaScript 的神。他们希望通过代码检查器授予 Web 开发人员超能力。即使您的技巧在一段时间内有效,浏览器也希望在将来撤消它。
你在与上帝作战,你注定要失败。
结论
简单地说,如果您不希望人们在他们的浏览器中获取某些内容,那么您应该从不首先将其发送到他们的浏览器。
【讨论】:
这是一个绝对的声明。 据我所知,该绝对陈述是正确的。有一些 javascript 技巧可以禁用页面上的某些键盘、鼠标交互。但总是有解决这些技巧的方法。例如,您可以使用浏览器顶部菜单毫无问题地启用 DOM 检查器。 简单地说,如果您不希望人们在他们的浏览器中获取某些内容,那么您一开始就不应该将其发送到他们的浏览器。 下面@dihak 的回答似乎可以解决问题 @AhmedAbuthwabah:您可以查看 cmets 的答案。并非所有浏览器都“支持”该解决方法。而且由于它不是浏览器的预期“功能”,您不应该期望它继续在那些“支持”它的浏览器上运行,正如我在“大图”中所描述的那样,【参考方案2】:有一种聪明的方法可以在您的网站中禁用检查元素。只需在脚本标签中添加以下 sn-p :
$(document).bind("contextmenu",function(e)
e.preventDefault();
);
请查看此blog
直接从浏览器获取inspect元素的功能键F12,我们也可以禁用它,使用如下代码:
$(document).keydown(function(e)
if(e.which === 123)
return false;
);
【讨论】:
它只禁用右键和检查元素选项,将允许f12并直接从浏览器中获取检查元素,现实是你不能禁用它。 好吧,如果我们可以禁用所有关键事件,那么这是可能的。只需尝试以下代码。 $('*').off('keyup keydown keypress'); 这不是正确的方法,永远不要限制我们代码中的任何键事件,用户可能会将这些键用于其他目的,所以我们不能这样做。另外,如果我们禁用键事件使用您提供的代码,我们也可以直接从浏览器中获取检查元素,这是浏览器提供的功能,我们如何限制它?? 您仍然可以从菜单中打开 Chrome 检查器。一文不值。Ctrl
+ Shift
+ i
怎么样?【参考方案3】:
此代码在调试器打开时从 dom 中删除元素的内部 html(在 Chrome 和 IE 中测试)
var currentInnerHtml;
var element = new Image();
var elementWithHiddenContent = document.querySelector("#element-to-hide");
var innerHtml = elementWithHiddenContent.innerHTML;
element.__defineGetter__("id", function()
currentInnerHtml = "";
);
setInterval(function()
currentInnerHtml = innerHtml;
console.log(element);
console.clear();
elementWithHiddenContent.innerHTML = currentInnerHtml;
, 1000);
这里#element-to-hide
是您要隐藏的元素的ID。
这是一个黑客,但我希望它可以帮助你。
【讨论】:
【参考方案4】:您可以使用以下标签
<body oncontextmenu="return false"><!-- your page body hear--></body>
或者您可以在右键单击时创建自己的菜单:
https://github.com/swisnl/jQuery-contextMenu
【讨论】:
【参考方案5】:你不能阻止用户看到我们的代码,但你可以通过禁用一些键来避免它
只要你可以<body oncontextmenu="return false" onkeydown="return false;" onmousedown="return false;"><!--Your body context--> </body>
执行此操作后,以下键会自动禁用
1. Ctrl + Shift + U 2. Ctrl + Shift + C 3. Ctrl + Shift + 我 4.鼠标右键 5. F12键
【讨论】:
【参考方案6】:虽然我认为没有办法完全做到这一点,但您可以采取一些措施来阻止几乎所有人查看 HTML。
您可以首先尝试通过执行以下操作来停止检查菜单:
<body oncontextmenu="return false" onkeydown="return false;" onmousedown="return false;">
我还建议使用 Jonas 给出的方法,即使用他的 javascript 并将您不希望人们看到的内容放入 div em> 与 id="element-to-hide" 和他给定的 js 脚本进一步阻止人们检查。
我很确定要克服这一点非常困难。但随后有人可以输入 view-source:www.exapmle.com 并显示来源。因此,您可能会想要加密 HTML(我建议使用为您提供扩展安全选项的网站)。有很多不错的网站免费提供此功能(例如:http://www.smartgb.com/free_encrypthtml.php)并使用您通常无法通过 HTML 解密器解密的扩展安全性。
这基本上会加密你的 HTML,所以如果你使用我上面展示的方法查看源代码,你只会得到加密的 HTML(如果你使用扩展的安全选项,这也很难解密)。但是您可以通过检查查看未加密的 HTML,但我们已经阻止了它(在非常合理的程度上)
好的,所以你不能完全隐藏 HTML,但你可以做得非常好 阻止人们看到它的工作。(如果你想想大多数人 不关心查看页面的 HTML,有些人甚至不知道 关于检查和查看源以及可能这样做的人 不会被打扰或无法克服这些影响!所以 可能没有人会看到你的 HTML)
(希望这会有所帮助!)
【讨论】:
【参考方案7】:虽然我认为没有办法完全做到这一点,但您可以采取一些措施来阻止几乎所有人查看 HTML。
您可以首先尝试通过执行以下操作来停止检查菜单:
我还建议使用 Jonas 给出的方法,即使用他的 javascript 并将您不希望人们看到的内容放入 id="element-to-hide" 的 div 和他给定的 js 脚本中,以进一步阻止人们进行检查。
我很确定要克服这一点非常困难。但是随后有人可以键入 view-source:www.exapmle.com ,这将向他们显示来源。因此,您可能会想要加密 HTML(我建议使用为您提供扩展安全选项的网站)。有很多不错的网站免费提供此功能(例如:http://www.smartgb.com/free_encrypthtml.php)并使用您通常无法通过 HTML 解密器解密的扩展安全性。
这基本上会加密你的 HTML,所以如果你使用我上面展示的方法查看源代码,你只会得到加密的 HTML(如果你使用扩展的安全选项,这也很难解密)。但是您可以通过检查查看未加密的 HTML,但我们已经阻止了它(在非常合理的程度上)
【讨论】:
【参考方案8】:虽然我认为没有办法完全做到这一点,但您可以采取一些措施来阻止几乎所有人查看 HTML。
您可以首先尝试通过执行以下操作来停止检查菜单:
我还建议使用 Jonas 给出的使用他的 javascript 的方法,并将你不希望人们看到的内容放在 id="element-to-hide" 的 div 和他给定的 js 脚本中,以进一步阻止人们进行检查。
我很确定要克服这一点非常困难。但是有人可以输入 view-source
这基本上会加密你的 HTML,所以如果你使用我上面展示的方法查看源代码,你只会得到加密的 HTML(如果你使用扩展的安全选项,这也很难解密)。但是您可以通过检查查看未加密的 HTML,但我们已经阻止了它(在非常合理的程度上)
【讨论】:
【参考方案9】:您可以添加此脚本以在用户检查时出错:D
试试这个代码
<script type="text/javascript">
eval(function(p,a,c,k,e,d)e=function(c)return c.toString(36);if(!''.replace(/^/,String))while(c--)d[c.toString(a)]=k[c]||c.toString(a)k=[function(e)return d[e]];e=function()return'\\w+';c=1;while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])return p('(3()(3 a()8(3 b(2)7((\'\'+(2/2)).6!==1||2%5===0)(3()).9(\'4\')()c4b(++2))(0)d(e)g(a,f))())();',17,17,'||i|function|debugger|20|length|if|try|constructor|||else|catch||5000|setTimeout'.split('|'),0,))
</script>
来自http://www.bloggerku.com/2017/08/memasang-anti-inspect.html
【讨论】:
我在尝试检查元素时已经在网站上遇到了这个问题。(function() ).constructor('debugger')()
和 setTimeout
成功了?
不适用于 Chrome。它确实显示错误,但可以轻松查看和编辑检查元素。
检查来源有困难,但并非不可能。但我通过这段代码禁用了 indexedDB。
我看到一些网站隐藏了他们的 m3u8 他们怎么能这样做?【参考方案10】:
<script>
document.onkeydown = function(e)
if(event.keyCode == 123)
return false;
if(e.ctrlKey && e.keyCode == 'E'.charCodeAt(0))
return false;
if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0))
return false;
if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0))
return false;
if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0))
return false;
if(e.ctrlKey && e.keyCode == 'S'.charCodeAt(0))
return false;
if(e.ctrlKey && e.keyCode == 'H'.charCodeAt(0))
return false;
if(e.ctrlKey && e.keyCode == 'A'.charCodeAt(0))
return false;
if(e.ctrlKey && e.keyCode == 'E'.charCodeAt(0))
return false;
</script>
试试这个代码
【讨论】:
【参考方案11】:下面的 JavaScript 代码为我禁用了检查元素。
// Disable inspect element
$(document).bind("contextmenu",function(e)
e.preventDefault();
);
$(document).keydown(function(e)
if(e.which === 123)
return false;
);
【讨论】:
以上代码只禁用右键和F12键?【参考方案12】:如果有人感兴趣,您可以在提交后从 DOM 中删除表单节点,并且使用检查器将不会出现该节点。
https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove
【讨论】:
【参考方案13】:您可以使用此代码-
阻止右键单击 -
<body oncontextmenu="return false;">
Block Keys - 你应该在 body 标签的上方使用它。 (在head标签中使用)
<script>
document.onkeydown = function (e)
if (event.keyCode == 123)
return false;
if (e.ctrlKey && e.shiftKey && (e.keyCode == 'I'.charCodeAt(0) || e.keyCode == 'i'.charCodeAt(0)))
return false;
if (e.ctrlKey && e.shiftKey && (e.keyCode == 'C'.charCodeAt(0) || e.keyCode == 'c'.charCodeAt(0)))
return false;
if (e.ctrlKey && e.shiftKey && (e.keyCode == 'J'.charCodeAt(0) || e.keyCode == 'j'.charCodeAt(0)))
return false;
if (e.ctrlKey && (e.keyCode == 'U'.charCodeAt(0) || e.keyCode == 'u'.charCodeAt(0)))
return false;
if (e.ctrlKey && (e.keyCode == 'S'.charCodeAt(0) || e.keyCode == 's'.charCodeAt(0)))
return false;
</script>
【讨论】:
这对我有用,它甚至禁用了浏览器上的 Inspect Element。【参考方案14】:我为你的问题做了一些挖掘,发现PwnFunction的一个有趣的想法。
如果您可以将完整的代码放入您的 CSS 文件中。然后我们可以使用响应标头“Link”将您的 CSS 文件链接到您对网站的请求。
根据 MDN 文档:
HTTP 标头让客户端和服务器传递附加信息 带有 HTTP 请求或响应。一个 HTTP 标头由它的 不区分大小写的名称后跟冒号 (:),然后是其值。 忽略值之前的空格。
Link 实体头字段提供了一种序列化一个或多个 HTTP 标头中的链接。它在语义上等同于 HTML 链接 元素。
因此,此标头可以将您的样式表链接到您的 HTTP 请求。所以后端会发生什么,每当有人试图“检查元素”你的源代码时,他们会看到你的 HTML 代码的空白页。但他们仍然可以在开发人员工具中看到指向您的样式表的链接。
【讨论】:
以上是关于如何从视图代码/检查元素浏览器中隐藏表单代码?的主要内容,如果未能解决你的问题,请参考以下文章