首页 > 其他分享 >前端页面防止它人代码调试

前端页面防止它人代码调试

时间:2024-07-01 19:26:50浏览次数:3  
标签:debugger 函数 setInterval 前端 ban 代码 调试 页面

今天分享一段 JS 代码片段,是防止代码被调试或篡改的基础。

老规矩,先阅读代码片段并思考,再看代码解析再思考,最后评论区留下你的见解!

(()=>{
function ban(){
   setInterval(()=>{debugger;}, 50);
   try {
      ban();
   } catch(err){}
}
ban();
})();

 

分享原因

这段代码展示了如何使用立即执行函数表达式 (IIFE) 和 setInterval 方法,通过在短时间内持续触发 debugger 语句来迫使调试器频繁中断,从而使调试变得极为困难。

同时,通过递归调用 ban 函数进一步增加了复杂性,即使捕获到异常也会继续执行,确保防护措施持续生效。

这种技巧常用于防止代码被调试或篡改,是一些反调试和反破解技术的基础。

代码解析

1. 立即执行函数 (()=>{ ... })();

立即执行函数在定义时立即执行,不需要显式调用。

用于创建一个独立的作用域,避免变量污染全局作用域。

2. setInterval(()=>{debugger;}, 50);

setInterval 方法会每隔 50 毫秒执行一次传入的箭头函数。

箭头函数中包含 debugger 语句,会导致浏览器或开发工具中的调试器不断中断执行。

3. try {ban(); } catch(err){}

尝试调用 ban 函数自身,形成递归调用。

如果递归调用过程中出现错误(例如栈溢出),错误会被捕获并忽略,不会终止程序执行。

标签:debugger,函数,setInterval,前端,ban,代码,调试,页面
From: https://blog.csdn.net/lbking666666/article/details/140081219

相关文章

  • 前端如何用密文跟后端互通?原来那么简单!
    ......
  • 苹果内购的凭证验证和解密(前端和本地node服务)
    苹果内购的凭证验证和解密最近在搞苹果内购,是使用微信提供的Dount提供的小程序转成APP。苹果内购使用的也是他们封装好的js接口,然后后端在解析我传递的支付凭证的时候他一直解析不成功然后我坚信自己的传递参数没有问题,我就自己使用node写了一个本地服务去验证我的支付凭证......
  • 不只是前端,后端、产品和测试也需要了解的浏览器知识
    一、我们为什么要了解浏览器?1.对于前端开发者1.浏览器是用户体验的第一线。我们需要了解浏览器的工作原理,才能有效地设计和实现用户界面,确保良好的用户体验。2.好的产品需要考虑浏览器兼容性。我们需要了解这些差异,以确保网站或应用在不同的浏览器中都能正常工作,因为不同的浏......
  • js前端通过xlsx 实现带单元格合并的excel导出
    tableToExcelWithMerge(rows){constThis=this;letjsonData=This.formatExcelData(rows);console.log("dwadwa",jsonData)//创建工作簿constwb=XLSX.utils.book_new();//转换数据为工作表constws=XLSX.utils.aoa......
  • vue前端项目补充API设计、安全性、状态管理、前端路由等功能
    为了完善前端项目,我们需要考虑API设计、安全性、状态管理和前端路由等方面。以下是如何集成这些功能的基本步骤。API设计定义API接口:根据后端服务提供的API,在前端项目中定义相应的接口函数。使用axios或其他HTTP客户端库来发送请求。封装API请求:创建一个服务模块......
  • 前端基础:HTML
    目录HTML概述HTML基本语法标签属性代码基本语法注解运行​编辑基本常用标签标题标签代码运行 段落标签代码运行列表无序列表代码 运行有序列表代码 运行 ​编辑超链接代码运行 图像标签代码运行特殊符号转义代码运行 ​编辑表格,表格属性......
  • flutter3空页面加导航
    import'package:flutter/material.dart';voidmain(){runApp(constGoWaterMyApp());}classGoWaterMyAppextendsStatelessWidget{constGoWaterMyApp({super.key});@overrideWidgetbuild(BuildContextcontext){returnMaterialApp(......
  • 小程序获取当前页面栈及应用
    前言:小程序跳转路由,会在页面栈里留下记录的,有的时候,我们就可以利用页面栈的记录来做一些便捷的操作。获取当前页面栈:varpages=getCurrentPages();console.log('pages',pages)console.log('pagesLength',pages.length)官网地址:getCurrentPages()|uni-app官网 应用:......
  • 前端基建
    前端基建是指为了提高开发效率和代码质量,对前端开发过程中的公共部分进行抽象和封装的过程。以下是一些常见的前端基建的方面:脚手架工具:提供项目初始化的工具,帮助开发者快速创建项目,设置好基础的目录结构和配置。组件库:创建一套通用的UI组件库,可以在多个项目中复用,提高开发......
  • 前端如何提升用户体验
    提高页面加载速度:优化代码,减少HTTP请求,使用CDN,利用浏览器缓存等方法可以提高页面加载速度。优化交互设计:提供清晰的导航,合理的布局,一致的设计,友好的错误提示等,可以使用户更容易使用网站。响应式设计:使网站能够在不同的设备和屏幕大小上良好地工作,提供一致的用户体验。......