【问题标题】:How to Disable Function keys using Javascript?如何使用 Javascript 禁用功能键?
【发布时间】:2012-12-03 07:21:37
【问题描述】:

我有一个页面,我需要禁用功能键,主要是 F12(Developertools)。 我在页面中显示了一些敏感数据,所以无论如何我都无法让用户看到 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,我使用相同的代码覆盖它。但不幸的是,它甚至没有点击“CASE”,按下 F12、F1 等按钮时也没有出现消息框。

请帮帮我。

【问题讨论】:

  • 答案是您不应该通过网络发送敏感数据。禁用 F12 可能会禁用在一个浏览器上进入开发人员工具的一种方式。但是如果有人点击菜单选项怎么办?更不用说敏感数据对任何有一点专业知识的人都是可见的。
  • 即使没有控制台,我也可以轻松获取数据或解开你的保护或用 Tampermonkey 或 Greasemonkey 挂钩我自己的控制台。
  • 即使你禁用F12,我也可以按下Ctrl+Shift+I,甚至没有意识到F12被禁用。
  • @JanDvorak。我猜 OP 也可以捕获Ctral+Shift+I,但这可能很快就会失控,对吧?我的意思是,不同的浏览器是否都具有相同的控制台组合键?我有点怀疑。
  • @Cerbrus 你可以用F12, Ctrl+Shift+I and RightClick杀死所有流行的五个(FF+IE+O+WK)的快捷键,但是你不能杀死它们各自的菜单项,你不能杀死Tampermonkey,你不能杀死 Fiddler...

标签: javascript asp.net browser browser-history


【解决方案1】:

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

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

现在,您可以更彻底地禁用任何按钮的功能,方法是在事件侦听器中添加:
event.preventDefault(),但仍然不可靠。

【讨论】:

  • 另外,请考虑将此标记为您的答案。我意识到这不是您要寻找的答案,但这是程序员生活中的铁证:语言决定(可用)功能。
【解决方案2】:
document.onkeydown = KeyCheck;

成功了。

【讨论】:

  • 它只会覆盖用户输入这些键。但他们仍然可以使用菜单获取其中一些信息。
【解决方案3】:

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

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

  • 代理,包括 HTTP 调试器/代理,例如 Fiddler 或浏览器内置的。
  • 来自 curl 等控制台工具的直接 GET 请求。
  • 各种网络爬虫,包括 Google 等搜索引擎。

使用 HTTPS 并且除非严格要求,否则不要发送有意义的信息,这是一种比试图限制用户可以使用其计算机执行的操作更容易的保护方法。

【讨论】:

  • 如果只有禁用代理是可能的,它会使 IP 禁令更加可靠:P(除了简单的 IP 更改)
  • @Cerbrus,:) 我还应该添加搜索引擎(即 Google)...(显然 +1 对您的回答更严重)。
  • 嗯,我什至没有想到那些蜘蛛。谢谢:D
【解决方案4】:

试试这个:

<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>

【讨论】:

  • 使用addEventListener 而不是将事件硬编码到文档中,也可以使用DRY。初始化函数,然后在代码中按名称引用函数。最后,mousedown 事件没有键码。
  • 顺便说一句,我是从 here 那里得到的...
  • 那这家伙应该因为发布了错误的代码而被打头;-)
  • 但它有效,我想这很好。 :) 我认为我已经为回答“如何使用 Javascript 禁用功能键?”这个问题做出了贡献。只是分享我的发现..
【解决方案5】:

此代码非常适合我禁用右键单击和禁用 F12

<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")

【讨论】:

    【解决方案6】:

    当用户按下 F12 键时,浏览器开发者工具栏将在浏览器下方打开。

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

    Here is the code

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多