【安全】如何防止他人恶意调试你的web程序
1前言
看到社区很多都在讨论如何调试,如何高级的调试,以及一些调试的奇技淫巧,今天我想和大家聊聊,怎么禁止调试,禁止他人调试我们的程序
为什么会有这篇文章呢,源自一次我寻找盗版电影的遭遇,一次好奇心的驱使下,由于很多这种平台都是只做搬运,不做存储,因为存储盗版电影向他人提供是违法的,特别是那种刚出的新电影! 当时好奇想通过看某站的控制台,想了解一下他们是怎么是通过啥接口,怎么请求,请求来的格式啥样的,抱着这样的好奇心,开始了我的奇妙之旅...
看完本篇文章你将学会
我无法断定你能学到什么,但是以下是我希望你能从本篇文章中学到的:
如何简单的防止你的程序被他人恶意调试
逆向思维学会如何更好的调试
2具体实现
防止调试的方法,这里我们主要是通过不断debugger
的方法来疯狂输出断点,让控制台打开后程序就无法正常执行
我们都知道debugger
只有在控制台被打开的时候才会执行,所以后面的所有方法都是围绕着这一特性来进行,废话不多说,我将通过以下几个案例向你们展示道高一尺魔高一丈的道理,先上代码:
方法一:
(() => {function block() {setInterval(() => {debugger;}, 50);}try {block();} catch (err) {}
})();
通过上方的代码我们可以看到,在页面中打开控制台后,会有以下结果:
需要在这里说明以下几点:
程序被
debugger
阻泄了,我们无法像以往一样在 Source Tab 中的对应 js 代码处添加断点调试,无法调试程序的执行逻辑.在程序异常复杂且被混淆后的代码是异常难读的!通常我们会在 source 的左边加上breakpoint
来让程序每次走到加点的地方停下来,以便让我们查看一些变量的值或是步骤的流程逻辑(如下图所示)
我们都知道,第一次打开控制台是看不到 network tab 中的任何请求的,所以我们想通过 network tab 来查看网页都做了哪些请求,也是看不到的,当我们打开控制台就会出
debugger
阻挡我们,我们可以通过下面的解决方法来处理,或者是用抓包工具来查看具体的请求
大家可以先不看解决方法,想想如果是你,这个时候怎么突破这个屏障呢? 第一次遇到这种情况我也是很懵,不知道咋处理,后面发现问题简直不要太简单,我们可以带着疑问来看:
对于第一个示例,我们如何解决?(绕过它)
答案是: 禁止断点
可以看到很简单,在 Chrome 控制台的 Source Tab 页点击 Deactivate breakpoints 按钮或者按下 Ctrl + f8(如下图所示)。但是对于控制台不熟悉的小伙伴,很难会想到这里去.
但是,难道这篇文章就这样结束了?那我可顶不住小伙伴们的 "就这?"
【安全】如何防止他人恶意调试你的web程序相关推荐
- 怎么样禁止恶意调试控制台
防止恶意调试控制台 身为前端人员,查看控制台已经是一个日常操作,项目除了什么问题第一反应就是打开控制台一探究竟. 直到昨天,负责手头项目的产品突然跟我说使用使用遮罩层遮住部分页面上面的假数据方案不通过 ...
- java-web测试题cpu_tomcat+java的web程序持续占cpu高问题调试【转】
转自 tomcat+java的web程序持续占cpu问题调试 - 像风一样的自由 - CSDN博客 http://blog.csdn.net/five3/article/details/2841677 ...
- 如何调试Node.js应用程序?
如何调试Node.js服务器应用程序? 现在,我主要使用带有以下打印语句的警报调试 : sys.puts(sys.inspect(someVariable)); 必须有更好的调试方法. 我知道Goog ...
- debug —— set args调试命令(作为程序运行时的参数)
debug调试 -- set args 作为程序运行时候的参数 set args作为程序运行时参数: 源代码: 1 #include <stdio.h>2 int main(int ar ...
- 【Android 逆向】代码调试器开发 ( 等待进程状态改变 | detach 脱离进程调试 PTRACE_DETACH | 调试中继续运行程序 PTRACE_CONT )
文章目录 一.等待进程状态改变 二.detach 脱离进程调试 PTRACE_DETACH 三.调试中继续运行程序 PTRACE_CONT 一.等待进程状态改变 上一篇博客 [Android 逆向]代 ...
- STM32的调试方式、更新程序、仿真以及补救措施
STM32的调试方式.更新程序.仿真以及补救措施 1. STM32的调试方式选择 STM32支持JTAG和SWD两种调试方式,且默认状态下这两种调试功能都是开启的. 由此我们可以知道: 如果要使用JT ...
- idea调试怎么跳出循环_使用IDEA的Debug调试功能,查看程序的运行过程
Debug追踪,使用IDEA的断点调试功能,查看程序的运行过程 知乎视频www.zhihu.com 1. 在有效代码行,点击行号右边的空白区域,设置断点,程序执行到断点将停止,我们可以手动来运行程序 ...
- 调试Release发布版程序的Crash错误
订阅 调试Release发布版程序的Crash错误 http://dingchaoqun12.blog.163.com/blog/static/116062504201152834814661/ 在W ...
- vs2015 linux jni,使用Visual C++ 跨平台移动技术调试JNI Android 应用程序
使用Visual C++ 跨平台移动技术调试JNI Android 应用程序 02/05/2015 6 分钟可看完 本文内容 [原文发表时间] 2014/12/12 4:22PM 之前我们已经介绍了 ...
- linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法
Linux,一切皆文件,那么在Android系统本身,也是Linux+java罢了,也是在Linux的运行环境下. 通常,我们在调试程序的都会使用printf. 在Android中,我们会去使用log ...
最新文章
- python 词云_python数据可视化——词云
- java servlet post_Java中Servlet Post和Get乱码
- AjaxPro.2.dll在VS2005使用中的基本使用
- SPOJ Pattern Find(Rabin Karp)
- windows下Python到linux运行遇到的字符编码问题
- cocos2d-x 帧动画
- componentsJoinedByString 和 componentsSeparatedByString 的方法的区别
- 操作系统(12)-【Linux】索引式文件系统
- 再不解决延迟不当,小心你的内存被打爆
- 【设计素材】表格数据形平面海报素材
- (转)Java DecimalFormat 用法(数字格式化)
- 安卓修复已遭在野利用的内核 0day 漏洞
- DEP机制的保护原理
- 学习自动驾驶的路径是什么?这份技能图谱告诉你
- 《WF编程》系列之16 - 工作流与外部世界:生存周期事件 3.2 工作流与外部世界
- cognos java,cognos10用JAVA如何获取passPortID(即实现单点登录)
- 不同角度的5S管理作用总结
- 【鸡汤】过往不恋,未来不迎,当下不杂
- GMCM2017-前景目标提取
- 微信小程序评分功能(一)
热门文章
- cnpm : 无法加载文件 C:\Users\小印丶\AppData\Roaming\npm\cnpm.ps1,因为在此系统上禁止运行脚本。
- ORA-01790: expression must have same datatype as corresponding expression
- Win11打不开本地组策略编辑器怎么办
- python opencv生成背景透明图标
- 奋斗的小孩系列 FPGA学习altera系列: 第十六篇 分频器设计
- 一寸照片快照多少钱_去照相馆拍照一般多少钱
- 针对商品标题冗长问题,阿里工程师怎么解决?...
- RPL(9):RFC6550翻译(9)---安全机制
- pycharm print 显示红色下划线
- 自然语言处理NLP概论