禁止别人调试自己的前端页面代码

这篇具有很好参考价值的文章主要介绍了禁止别人调试自己的前端页面代码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 🎈 为啥要禁止?
  • 🎈 无限 debugger
  • 🎈 无限 debugger 的对策
  • 🎈 禁止断点的对策
  • 🎈 忽略执行的代码
  • 🎈 忽略执行代码的对策
  • 🎈 终极增强防调试代码

🎈 为啥要禁止?

  • 由于前端页面会调用很多接口,有些接口会被别人爬虫分析,破解后获取数据
  • 为了 杜绝 这种情况,最简单的方法就是禁止人家调试自己的前端代码
禁止别人调试自己的前端页面代码
禁止调试

🎈 无限 debugger

  • 前端页面防止调试的方法主要是通过不断 debugger 来疯狂输出断点,因为 debugger 在控制台被打开的时候就会执行
  • 由于程序被 debugger 阻止,所以无法进行断点调试,所以网页的请求也是看不到的
  • 基础代码如下:
/**
* 基础禁止调试代码
*/
(() => {
	function ban() {
	  setInterval(() => {
	    debugger;
	  }, 50);
	}
	try {
	  ban();
	} catch (err) { }
})();
禁止别人调试自己的前端页面代码
基础禁止调试

🎈 无限 debugger 的对策

  • 如果仅仅是加上面那么简单的代码,对于一些技术人员而言作用不大
  • 可以通过控制台中的 Deactivate breakpoints 按钮或者使用快捷键 Ctrl + F8 关闭无限 debugger
  • 这种方式虽然能去掉碍眼的 debugger,但是无法通过左侧的行号添加 breakpoint
禁止别人调试自己的前端页面代码
取消禁止对策

🎈 禁止断点的对策

  • 如果将 setInterval 中的代码写在一行,就能禁止用户断点,即使添加 logpointfalse 也无用
  • 当然即使有些人想到用左下角的格式化代码,将其变成多行也是没用的
(() => {
  function ban() {
    setInterval(() => { debugger; }, 50);
  }
  try {
    ban();
  } catch (err) { }
})();
禁止别人调试自己的前端页面代码
禁止断点

🎈 忽略执行的代码

  • 通过添加 add script ignore list 需要忽略执行代码行或文件
  • 也可以达到禁止无限 debugger
禁止别人调试自己的前端页面代码
忽略执行的代码

🎈 忽略执行代码的对策

  • 那如何针对上面操作的恶意用户呢
  • 可以通过将 debugger 改写成 Function("debugger")(); 的形式来应对
  • Function 构造器生成的 debugger 会在每一次执行时开启一个临时 js 文件
  • 当然使用的时候,为了更加的安全,最好使用加密后的脚本
// 加密前
(() => {
  function ban() {
    setInterval(() => {
      Function('debugger')();
    }, 50);
  }
  try {
    ban();
  } catch (err) { }
})();

// 加密后
eval(function(c,g,a,b,d,e){d=String;if(!"".replace(/^/,String)){for(;a--;)e[a]=b[a]||a;b=[function(f){return e[f]}];d=function(){return"\w+"};a=1}for(;a--;)b[a]&&(c=c.replace(new RegExp("\b"+d(a)+"\b","g"),b[a]));return c}('(()=>{1 0(){2(()=>{3("4")()},5)}6{0()}7(8){}})();',9,9,"block function setInterval Function debugger 50 try catch err".split(" "),0,{}));
禁止别人调试自己的前端页面代码
解决对策

🎈 终极增强防调试代码

  • 为了让自己写出来的代码更加的晦涩难懂,需要对上面的代码再优化一下
  • Function('debugger').call() 改成 (function(){return false;})['constructor']('debugger')['call']();
  • 并且添加条件,当窗口外部宽高和内部宽高的差值大于一定的值 ,我把 body 里的内容换成指定内容
  • 当然使用的时候,为了更加的安全,最好加密后再使用
(() => {
  function block() {
    if (window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200) {
      document.body.innerHTML = "检测到非法调试,请关闭后刷新重试!";
    }
    setInterval(() => {
      (function () {
        return false;
      }
      ['constructor']('debugger')
      ['call']());
    }, 50);
  }
  try {
    block();
  } catch (err) { }
})();
禁止别人调试自己的前端页面代码
终极增强防调试

文章来源地址https://www.toymoban.com/news/detail-621008.html

到了这里,关于禁止别人调试自己的前端页面代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 路由器如何禁止别人蹭网

    无线路由器本来网速不好(你懂得),还老是被人家蹭网,改密码已经不不能治本了,第一人家问也不好意思,干脆屏蔽它有了密码他也上不了;第二彻底杜绝破解软件来蹭网。来看如何实现 方法/步骤 首先自然是查看个人手机WiFi识别码(MAC码),进入手机的设置里“关于手

    2024年02月08日
    浏览(29)
  • 视频网页前端禁止截屏代码实现js

    原理是采用商业级DRM实现, DRM 许可证费用目前没有免费服务商 ,腾讯云价格是0.0056元/次。 另外此功能 不兼容安卓 ,安卓系统无法正常播放视频! 可以看到截屏时刻出现黑屏,录屏也能保证全黑状态。 商业级DRM能够实现媒体内容加密保护、防抓包和破解工具破解、防浏览

    2024年02月14日
    浏览(21)
  • 禁止局域网用户访问电脑不想让别人窥探电脑中的秘密

    我们知道可以在局域网共享文件, 来方便资料和文件, 但是如果你不想让别人窥探你电脑中的秘密。就要禁止局域网用户访问电脑, 那该怎么办呢?下面教你怎么在禁止局域网用户访问电脑的几个办法: 1. 直接断开连接来禁止访问电脑. 断开来访者的连接。单击工具栏上的【显

    2024年02月06日
    浏览(29)
  • 手机web前端调试页面的几种方式

    PC端web页面调试比较容易,这里主要说几种移动端调试的方法,从简单到复杂、从模拟调试到远程调试,大概分为几部分: 1、Chrome DevTools(谷歌浏览器)的模拟手机调试 2、weinre(web inspector remote)远程调试工具 3、微信的“web开发者工具”,集成了Chrome DevTools和weinre,做的比较好

    2024年02月09日
    浏览(20)
  • Unity学习笔记--如何在Unity中把自己的代码打包成dll给别人使用?(纯保姆式教学,看完还不会,今晚八点,来沙城砍我)

    最近公司放年假了,没什么事做,所以来公司学习(蹭吃蹭喝ing) 突然记起来,秋招的时候,有面试官问我:如何在Unity中把自己写的代码给别人或者其他项目使用? 当时知道是利用C#的程序集来做,但是问我具体该怎么处理,我就不知道了,因为当时只有理论知识,没有实

    2024年01月18日
    浏览(16)
  • giteeclone别人仓库再上传自己仓库

    针对gitee中,clone其他人的仓库再上传到自己或者另一个仓库的情况,可以用一下这个方法。之前也用过,但是在用的时候发现还是不会,最后是重新找了一下。现在觉得还是觉得自己做一下笔记,以免下次找不到。 1.打开自己决定存放仓库的文件夹   2.右键git bash   3.git cl

    2024年02月07日
    浏览(28)
  • 用 RemoteDebug iOS Webkit 在 Chrome DevTools 中调试iOS/iPadOS设备的前端页面

      相信很多小伙伴在开发移动端网页时,都会遇到兼容性问题的修改,尤其是当项目运行在真机上时,一些奇奇怪怪的bug接踵而至,很是头疼。在Android设备上,我们可以轻松的在Chrome DevTools上进行调试,但面对iOS设备,在我们没有Mac电脑的情况下,调试iOS的页面就是困难重

    2024年02月03日
    浏览(20)
  • Vue项目前端代码防止被调试

    被安全测试针对了,总是调试我这不太安全的代码。前端代码深度混淆转成十六进制还不行,仍然找到加密方法,对后端数据进行解密。这次就修改了思路换种方法:  我承认阁下很强,但假如, 我是说假如打开控制台是空白页面,阁下又该如何应对呢? 解决办法 前端代码防

    2024年01月25日
    浏览(22)
  • 调试别人的API,一般有哪些步骤?

    当我们使用了一些由别人实现的API接口时,该如何进行调试呢?当我们使用的API返回一些意想不到错误时,该怎么办呢?这个问题可能是由于用户输入或者API本身,或者其他完全无关的内容等引起的。调试是我们进行定位并修复由单个API调用或一系列调用引发的问题。通常,我

    2024年02月02日
    浏览(23)
  • 如何查看自己的手机被是否被别人定位了?

    卫星定位说到卫星定位不得不提卫星系统。全球有四大卫星系统,大家最熟悉的莫过于北斗定位系统和GPS定位系统了。除了北斗和GPS,还有俄罗斯的格洛纳斯和欧盟的伽利略定位系统。除此之外还有些区域卫星系统,如日本的QZSS和印度IRNSS,可以实现区域定位导航或者作为辅

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包