Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript禁用功能键?_Javascript_Asp.net_Browser_Browser History - Fatal编程技术网

如何使用Javascript禁用功能键?

如何使用Javascript禁用功能键?,javascript,asp.net,browser,browser-history,Javascript,Asp.net,Browser,Browser History,我有一个页面,我需要禁用功能键,主要是F12Developertools。 我在页面中显示了一些敏感数据,因此在任何情况下,我都无法让用户看到html并获取隐藏字段。 我检查了一些javascript,除了f1、f12等功能键外,它几乎可以处理所有键 我是否可以在浏览器中禁用这些按钮 document.onkeyup = KeyCheck; function KeyCheck() { var KeyID = event.keyCode; alert(KeyID); swi

我有一个页面,我需要禁用功能键,主要是F12Developertools。 我在页面中显示了一些敏感数据,因此在任何情况下,我都无法让用户看到html并获取隐藏字段。 我检查了一些javascript,除了f1、f12等功能键外,它几乎可以处理所有键

我是否可以在浏览器中禁用这些按钮

document.onkeyup = KeyCheck;
function KeyCheck() {
    var KeyID = event.keyCode;
    alert(KeyID);
    switch (KeyID) {
        case 123:  //F12 KEY CODE         
            alert('hello');
            return false;
            break;            
    }

}
这是我用来重写密钥的代码。当我搜索时,F12键的键代码是123,我使用相同的代码覆盖它。但不幸的是,它甚至没有击中的情况下,并没有出现消息框时,按F12,F1等按钮

请帮我做这件事

document.onkeydown = KeyCheck;

成功了

当您发送javascript数据时,没有可靠的方法防止用户篡改它。始终使用服务器端检查来验证返回的数据

人们仍然可以使用浏览器的菜单来启用开发人员控制台。或者通过右键单击->检查元素,或者使用热键打开控制台的不同部分,然后在控制台中切换到另一个页面,或者使用我没有提到的热键之一。 或者,他们可以简单地禁用javascript。或者编辑javascript以禁用该块

现在,您可以通过添加一个:
event.preventDefault在您的事件侦听器中,但仍然不可靠。

不,您不能通过页面上的JavaScript查看源代码/开发人员工具或浏览器的任何其他应用程序级功能

有很多方法可以查看网页的来源。限制所有外部方访问/存储/查看HTML是一项非常艰巨的任务。以下是您必须禁用的其他内容的部分列表:

代理,包括HTTP调试器/代理,如Fiddler或内置于浏览器中的代理。 直接从控制台工具(如curl)获取请求。 各种各样的网络爬虫,包括像谷歌这样的搜索引擎。 使用HTTPS,不要发送敏感信息,除非严格要求,这是比限制用户对其机器的操作更简单的保护方法。

尝试以下方法:

<script language="JavaScript">
    document.onkeypress = function (event) {
        event = (event || window.event);
        if (event.keyCode == 123) {
           //alert('No F-12');
            return false;
        }
    }
    document.onmousedown = function (event) {
        event = (event || window.event);
        if (event.keyCode == 123) {
            //alert('No F-keys');
            return false;
        }
    }
    document.onkeydown = function (event) {
        event = (event || window.event);
        if (event.keyCode == 123) {
            //alert('No F-keys');
            return false;
        }
    }
</script>
这段代码非常适合我禁用右键单击和禁用F12


当用户按F12键时,浏览器开发人员工具栏将在浏览器的下面部分打开

通过使用开发者工具栏,用户可以看到页面中控件的设计、javascript代码和相应的css。为了防止用户这样做,我们将隐藏开发者工具栏


答案是你不应该通过网络发送敏感数据。禁用F12可能会禁用在一个浏览器上进入开发人员工具的一种方法。但是如果有人点击菜单选项怎么办?更不用说敏感数据对任何一个稍有知识的人来说都是可见的。即使没有控制台,我也可以很容易地获取数据或解开你的保护,或者用Tampermonkey或Greasemonkey挂上我自己的控制台。即使你禁用F12,我也可以按Ctrl+Shift+I,甚至没有意识到F12被禁用。@JanDvorak。我想OP也可以赶上Ctral+Shift+I,但这可能很快就会失控,对吧?我的意思是,不同的浏览器是否都有相同的控制台组合键?我有点怀疑。@Cerbrus你只需F12、Ctrl+Shift+I和右键单击就可以杀死流行的五个FF+IE+O+WK的所有快捷键,但你不能杀死它们各自的菜单项,你不能杀死Tampermonkey,你不能杀死Fiddler…如果只禁用代理是可能的,这将使IP禁令更加可靠:P除了简单的IP之外changes@Cerbrus,:我还应该添加搜索引擎,例如谷歌。。。很明显,你的答案+1更严重。嗯,我甚至没有想到那些蜘蛛。谢谢,DAlso,请考虑把这个标记为你的答案。我意识到这并不完全是你想要的答案,但这是程序员生活中的硬事实:语言决定可用的功能。使用addEventListener,而不是将事件硬编码到文档中。初始化函数,然后在代码中按名称引用函数。最后,mousedown事件没有键码。顺便说一句,我从中得到了它……然后那个家伙应该因为发布了糟糕的代码而被打脑袋-但它是有效的,我想这很好我认为我在回答如何使用Javascript禁用函数键这个问题上做出了贡献?只是分享我的发现..它将覆盖用户键入这些键。但他们仍然可以使用菜单获取一些信息。
<script language=JavaScript>

var message="You Have No Permission";


 function clickIE4(){
   if (event.button==2){
     alert(message);
     return false;
   }
 }

 function clickNS4(e){
   if (document.layers||document.getElementById&&!document.all){
     if (e.which==2||e.which==3){
       alert(message);
       return false;
      }
   }
 }

  if (document.layers){
    document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown=clickNS4;
   }
   else if (document.all&&!document.getElementById){
      document.onmousedown=clickIE4;
   }

   document.oncontextmenu=new Function("alert(message);return false")