美文网首页
web防止非法调试

web防止非法调试

作者: wwmin_ | 来源:发表于2021-09-08 10:48 被阅读0次

    web防止别人任意调试, 目前有一些局限性, 即当把控制台的detectivate breakpoints按钮点亮后此方法即刻失效.
    已验证toString方法,在较新版本的浏览器中也无效果.
    你可以把它当作你的工具函数,在需要不让别人轻易调试的项目中引用

    //此判断时在vue3的环境中使用, 仅当不是DEV时开启, 方便开发
    if (!import.meta.env.DEV) {
      const emitEvent = (isOpen, orientation) => {
        window.dispatchEvent(new CustomEvent('devtoolsChange', {
          detail: {
            isOpen,
            orientation
          }
        }));
      };
      (function () {
        'use strict';
    
        const devtools = {
          isOpen: false,
          orientation: undefined
        };
    
        const threshold = 160;
        const main = ({ emitEvents = true } = {}) => {
          //
          var timeLimit = 50;
          var open = false;
          var startTime = new Date();
          debugger;
          if (new Date() - startTime > timeLimit) {
            open = true;
            emitEvent(true, "");
          } else {
            open = false
          }
    
          const widthThreshold = window.outerWidth - window.innerWidth > threshold;
          const heightThreshold = window.outerHeight - window.innerHeight > threshold;
          const orientation = widthThreshold ? 'vertical' : 'horizontal';
    
          if (
            !(heightThreshold && widthThreshold) &&
            ((window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized) || widthThreshold || heightThreshold)
          ) {
            if ((!devtools.isOpen || devtools.orientation !== orientation) && emitEvents) {
              emitEvent(true, orientation);
            }
    
            devtools.isOpen = true;
            devtools.orientation = orientation;
          } else {
            if (devtools.isOpen && emitEvents) {
              emitEvent(false, undefined);
            }
    
            devtools.isOpen = false;
            devtools.orientation = undefined;
          }
        };
    
        main({ emitEvents: false });
        setInterval(main, 500);
    
        if (typeof module !== 'undefined' && module.exports) {
          module.exports = devtools;
        } else {
          window.devtools = devtools;
        }
      })();
    }
    
    window.addEventListener('devtoolsChange', event => {
      const { isOpen } = event.detail;
      if (isOpen) {
        let text = "检测到非法调试,您的信息将被上传并通知网站管理方,有关人员将进行调查,请关闭调试窗口后刷新重试!";
        document.body.innerHTML = "<h1 style='color:black'>" + text + "</h1><hr>" + "<h1 style='color:white'>" + text + "</h1>";
      }
    });
    

    推荐加密后使用,加密网站推荐 https://www.bejson.com/encrypt/jsobfuscate/

    如果要求严格的防审查策略,可以尝试使用如下库, 该库更新比较频繁,具有一定参考价值: https://github.com/fz6m/console-ban

    相关文章

      网友评论

          本文标题:web防止非法调试

          本文链接:https://www.haomeiwen.com/subject/ykamwltx.html