惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tenable Blog
Engineering at Meta
Engineering at Meta
The Register - Security
The Register - Security
N
Netflix TechBlog - Medium
D
Docker
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
月光博客
月光博客
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
D
DataBreaches.Net
IT之家
IT之家
V
V2EX
人人都是产品经理
人人都是产品经理
F
Fortinet All Blogs
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
雷峰网
雷峰网
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
有赞技术团队
有赞技术团队
aimingoo的专栏
aimingoo的专栏
MongoDB | Blog
MongoDB | Blog
P
Privacy International News Feed
F
Full Disclosure
P
Proofpoint News Feed
B
Blog RSS Feed
T
Tor Project blog
T
The Blog of Author Tim Ferriss
B
Blog
Webroot Blog
Webroot Blog
腾讯CDC
T
Troy Hunt's Blog
T
Tailwind CSS Blog
H
Heimdal Security Blog
AWS News Blog
AWS News Blog
G
Google Developers Blog
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
A
About on SuperTechFans
SecWiki News
SecWiki News
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
美团技术团队
L
LangChain Blog

BlogFinder

日常漫步 Vol.24 之漫步前山河 - 雅余 周报 #1-聊聊本周的收获 - Edwin's Blog 我的OpenCode必装插件与Skill Write Something 掌中之物未必在掌握之中 · CRIVU PiliNara,一个更顺手的 PiliPlus 分支 「NekoEcho」:做一个必有回响的猫娘主题博客 2026-05 书影音总结 简化博客主题 - 安迪 我第一次发布 npm 包 拾花小记#45:中考前的二三事 – 小改学习志 黛西花园5月游 #18 枇杷又熟了的五月月报 一些奇奇怪怪的需求?word仿方正书版的几个小操作 - Xiobb's Blog 0419 御温泉之旅 修复了一些bug,网站基本上趋于稳定了 - 新锐博客 又回到四十年前 如何定义成功 迷鹿屋2026已重新上线 科技冰火两重天+一周回顾 ${title} 热度退了,我反而用得更深了-咕咚同学 我到底该不该换个域名? 随身WIFI折腾记 - 安迪 博客撰写体验提升——hexo pro插件 为什么不用相机把屏幕上的接关密码拍下来? 国清寺与天台山 – Ouroboros ★★★★☆《挽救计划》——久违的经济上行感 - Davidの3号基地 删除右键“打开方式”里多余选项 第三周刊_No.53|一切都会被支付两次 安卓APP通话记录与录音上传踩坑记录 - 子舒的博客 天量下跌 inBox 笔记 2.3.8,把工具栏交给了你-咕咚同学 我把小龙虾搬到了微信-咕咚同学 安好 - 响石潭 Compound Engineering Plugin:让每个工程单元都比上一个更容易 MOSS-TTS Family:开源高质量语音与声音生成模型家族深度解析 Crawl4AI:专为 LLM 设计的开源 Web 爬虫与数据抓取工具 Build Your Own X:从零实现你最喜欢的技术——程序员进阶的终极资源清单 Anthropic Skills:用文件夹教 Claude 专业技能的开源框架 1年的去月球(下) - 梅之夏 欢迎回来。 简单讲讲 ASN.1 与 OID DTV - 直播聚合客户端 5.22-5.27 – 不兴江 还没去过鸭川 – 不兴江 张晶晶同学三刷林志颖 关于我 – 不兴江 爱与嫉妒 – 不兴江 港股被持续做空 备案码花了四百块-咕咚同学 一句话生成封面:我给公众号做了4种风格的AI封面生成技能 「官」方認證 再谈费曼学习法 2026-05-28T00:34:11+08:00 2026-05-28T00:28:45+08:00 离谱的英语学习指南:基于AI的英语进阶系统方法论 iii:零集成架构的后端统一运行时 Claude Code Harness:让 Claude Code 工作有迹可循的工程化框架 Heretic:全自动移除大语言模型审查机制的开源工具 MarkItDown:微软开源的万能文档转 Markdown 利器 Harness:让 Claude Code 秒变多智能体协作工厂 这段时间尽折腾AI Agent了,确实极大地提高了效率 近期动态:两个新站点正式上线啦 误判解除!zhouayuan.com 腾讯安全申诉成功 - 周阿源|玩具设计・插画日常・生活随笔 Ralph:让 AI 编码工具自主循环跑完所有 PRD 任务的量产神器 全都违法 – 个人工作记录 关于zhouayuan.com被误判 “含违规信息” 的说明与申诉记录 - 周阿源|玩具设计・插画日常・生活随笔 小米 MiMo v2.5 Pro 白嫖 最大的人间清醒,兜里有钱,但是不花。 夜晚靓歌(12):于文文现场solo - 王志勇的Blog 今日插画:风扬起的倔强 - 周阿源|玩具设计・插画日常・生活随笔 回门习俗 独立网卡 - 忘记了回忆 500亿入股人工智能企业 从命令行到桌面智能体-咕咚同学 第一性原理读书笔记 行者微评论223-加班の守株待兔-博客|政治与时事-风雨行者 ZOZO开源物理接触求解器:GPU加速的可扩展仿真引擎 OpenStock:开源股票市场交易平台技术深度解析 MoneyPrinterTurbo:基于AI的全自动短视频生成工具深度解析 Claude-Mem:为 Claude Code 构建的持久化记忆压缩系统 Twenty:可代码化定制的企业级开源 CRM 平台技术深度解析 2026-05-26T22:59:17+08:00 企业级开源大模型部署平台 GPUStack 实战教程 1年的去月球(上) - 梅之夏 Sevalla - 静态网站托管服务 不用翻墙、不用注册、不用月费,普通人也能用上 Claude Code 装修灯具要注意⚠️ 黄梅天先锋 - 游子微博 公安备案顺利办结,站点备案全部完成 - 周阿源|玩具设计・插画日常・生活随笔 第三次兑换天猫超市卡了宗宗酱-三维狐少儿编程 Don't think, feel. - Rolen's Blog 人这一辈子,到底图个什么 博客迁移 - Edwin's Blog 情感赛道写作模板 再现本轮行情的典型特征 裁员与平常心-咕咚同学 别让“偷懒”,成为隐私泄露的破绽 片刻 - Jdeal | Life is like a Design.
老板让我防黑客,我反手写了个"自爆程序"
Lycoris · 2026-06-17 · via BlogFinder

事情是这样的

今天老板走过来,拍了拍我的肩膀:"咱们的网站代码不能让人随便看,你想个办法,谁要是敢打开控制台,就让他见识见识社会的险恶。"

我寻思着,这不就是防君子不防小人吗?但老板发话了,咱得整活啊!

方案一:无限debugger,卡到你怀疑人生

setInterval(function() {
    check()
}, 1000);

var check = function() {
    function doCheck(a) {
        if (("" + a / a)["length"] !== 1 || a % 20 === 0) {
            (function() {}["constructor"]("debugger")())
        } else {
            (function() {}["constructor"]("debugger")())
        }
        doCheck(++a)
    }
    try {
        doCheck(0)
    } catch (err) {}
};
check();

原理是啥呢?

简单说就是:这代码跟个熊孩子似的,一直在那"debugger!debugger!debugger!"地喊。你要是开了控制台,它就在那不停地暂停、暂停、暂停,就像你打游戏的时候你妈一直在旁边喊"吃饭了"一样烦人。

但是! 这玩意儿有个致命缺点——它自己也会把自己累死。因为一直在递归调用,CPU占用蹭蹭往上涨,用户电脑风扇转得跟要起飞似的。而且人家高手来了,右键点个"永不在此暂停",这招就废了。

方案二:日志陷阱,钓鱼执法

function toDevtools(){
  let num = 0; 
  let devtools = new Date();
  devtools.toString = function() {
      num++;
      if (num > 1) {
          window.location.href = "http://www.fly63.com" // 直接送你去鬼屋
      }
  }
 console.log('', devtools);
}
toDevtools();

这招妙在哪呢?

你想啊,正常人谁会没事干打开控制台看日志?但凡打开控制台的,十有八九是来"参观学习"的。这代码就像在门口放了个陷阱:你没开门(没开控制台),啥事没有;你一开门,直接给你传送走,跳到别的网站去。

原理贼简单console.log 打印对象的时候,如果控制台关着,它就不干活;一旦控制台打开,它就得把对象显示出来,这时候就会调用 toString 方法。我们就在这个方法里做手脚,发现有人来了立马跑路。

但缺点也很明显:有些人就是手贱,开了控制台又关了,再开一次,第二次触发就直接gg了。而且万一用户清空了控制台或者浏览器抽风,这招就失效了。

方案三:加密通话,看不懂就对了

if(window.location.href.indexOf('#debug')==-1){
  setInterval(function(){
    (function (a) {return (function (a) {return (Function('Function(arguments[0]+"' + a + '")()'))})(a)})('bugger')('de', 0, 0, (0, 0));
  }, 1000);
}

看到这代码,我第一反应是:"这写的什么玩意儿?"

第二反应是:"嗯,就是要这个效果!"

原理:其实就是把 debugger 拆开了揉碎了,用字符串拼接、函数嵌套、Function 构造器各种花里胡哨的方式重新组装。你一眼看过去根本不知道它在干嘛,但是一运行,控制台就炸了。

这招的精华在于:代码写得越乱,别人越难改。就像一个学霸故意把字写得跟鬼画符似的,你抄都抄不明白。

但是:这玩意儿容易把自己玩死。如果没控制好频率,浏览器直接卡死,用户只能强制关掉页面,然后骂一句"什么垃圾网站"。

说了这么多,到底该用哪个?

讲真,以上所有方法,都只能防住小学生,防不住大学生

真正的高手,打开控制台的第一件事就是禁用所有 debugger 语句,或者直接用无痕模式、用 curl 抓数据,你这些招数在人家眼里就跟小孩子过家家一样。

所以我的建议是:

  1. 千万别用无限循环那一套,太耗性能了,用户还没被防住呢,自己先被用户投诉了。

  2. 用方案二(日志陷阱),性能开销小,不会影响正常用户。

  3. 配合一点小技巧,比如检测到控制台打开就清空 console.log 的内容,或者在控制台输出个"哥们别看了,真没啥好看的"。

最后说点掏心窝子的话

前端安全,永远都是魔高一尺道高一丈。你写再牛逼的反调试,人家开个无痕模式、装个插件,分分钟给你破了解。

真正应该做的

  • 敏感逻辑放后端

  • 重要的接口加签名

  • 核心算法混淆但别过度

至于检测开发者工具这玩意儿,就当个乐子玩玩得了。别把时间花在跟"黑客"较劲上,多写点业务代码,早点下班才是正事!

Lycoris的小破站

来自一个虚弱的略懂代码的暴躁程序猿发布的没什么技术与文采的文章

本网站的原创文章部分资源内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系博主邮箱:zzyo.yj@outlook.com 进行删除处理

本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。

本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向博主举报

声明:版权所有,违者必究 | 如未注明,均为原创 | 本网站采用CC BY-NC-SA 4.0 协议进行授权

转载:转载请注明原文链接 - Lycoris