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

推荐订阅源

D
Docker
Simon Willison's Weblog
Simon Willison's Weblog
H
Help Net Security
F
Fortinet All Blogs
H
Heimdal Security Blog
S
Schneier on Security
L
LangChain Blog
博客园 - Franky
酷 壳 – CoolShell
酷 壳 – CoolShell
NISL@THU
NISL@THU
P
Palo Alto Networks Blog
J
Java Code Geeks
博客园 - 【当耐特】
The Last Watchdog
The Last Watchdog
W
WeLiveSecurity
www.infosecurity-magazine.com
www.infosecurity-magazine.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Vulnerabilities – Threatpost
I
InfoQ
Recorded Future
Recorded Future
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
C
CERT Recently Published Vulnerability Notes
T
Tenable Blog
腾讯CDC
C
Check Point Blog
量子位
M
MIT News - Artificial intelligence
GbyAI
GbyAI
罗磊的独立博客
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
B
Blog
小众软件
小众软件
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
CXSECURITY Database RSS Feed - CXSecurity.com
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
P
Privacy & Cybersecurity Law Blog
V2EX - 技术
V2EX - 技术
T
Threatpost
Engineering at Meta
Engineering at Meta
Attack and Defense Labs
Attack and Defense Labs
T
Tailwind CSS Blog
S
Securelist
The Cloudflare Blog
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Troy Hunt's Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
爱范儿
爱范儿

串串狗小刊 ⭐️

我的 Web 3D 世界梦 - 串串狗小刊 OPC Web 出海之图视频的 AI 供应商渠道和简单外链 - 串串狗小刊 简单聊聊我的 Nodejs 世界观 - 串串狗小刊 Web 出海快速判断关键词法和推荐 3 个 SKILL - 串串狗小刊 Web 出海之演示建站盈利和朋友 Reyn 的教训 阅读源代码前要运行的 5 条 Git 命令 - 串串狗小刊 介绍几组我一直在使用的 Codex 插件 我观看哥飞年终会议复盘的 Web 出海笔记(下) - 串串狗小刊 观看哥飞年终会议复盘的 8 个 Web 出海笔记 - 串串狗小刊 Codex 敞开用的技巧和谷歌趋势的参考词 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Web 出海之外链提交频率和如何不花 Token 处理代码 - 串串狗小刊 程序员现在的最佳副业 ~ Web 出海 - 串串狗小刊 如何设计良好的 API - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 你跟 AI 对话后会发生什么? - 串串狗小刊 出海 Web 之 GSC 里的曝光量和点击量和外链的关系 - 串串狗小刊 出海 Web 不要 恋战 新词游戏站 - 串串狗小刊 无港卡开通 Stripe 收款和 Nofollow 转 Dofollow 技巧 - 串串狗小刊 DeepSeek 发布氮气加速器 DSpark!可惜好东西又开源了 - 串串狗小刊 简单聊聊出海 Web 的游戏站 - 串串狗小刊 停止使用 JWT ! - 串串狗小刊 出海 SEO 之 Vercel App 找词法与 agentic-inbox 管理邮箱 - 串串狗小刊 出海 Web 之 Vercel 的必踩坑和 140 分钟需求调研 - 串串狗小刊 出海 Web 之根据调研结果,挑选需求 - 串串狗小刊 AI 时代前端写 UI 必备的 49 种 UI 风格! - 串串狗小刊 超惊艳的 3D 开放世界浏览器游戏 LAAS ,全程 Claude Fable 5 无干预开发 - 串串狗小刊 月入 4w 刀的小耳朵 sir 的出海经验 - 串串狗小刊 出海建站之 Product Hunt 的封号限制解封 - 串串狗小刊 出海 SEO 新手们,给你们分享个新词发现工具! - 串串狗小刊 Node-js 新手需要知道什么? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 用 AI 挑选 skill 头疼?聊聊四大 skill 仓库 - 串串狗小刊 让老外感受到了中国 SEO 的威力,amazing! - 串串狗小刊 驾驭工程后,AI 圈又一个新概念 Loop 工程(循环工程) - 串串狗小刊 Deepseek V4 Pro 极高的缓存命中率很重要! - 串串狗小刊 SEO 出海之田七使用 google trends 的经验 - 串串狗小刊 今年最燃Web出海奇迹,小白从0建站一个月入万刀全程详细复盘! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 两个朋友做跨境独立站编程出海的经历、找词技巧 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ SEO 之用 coolify 部署 nextjs 和 面包屑 使用误区 - 串串狗小刊 拆解 aidocmaker 这个 SEO 神站,聊聊 Lovart 的交互设计 - 串串狗小刊 三个最近做 SaaS 的 JS 小技巧 - 串串狗小刊 关键词评估和 reddit、HN、product hurt 起号运营小妙招! - 串串狗小刊 WASM、Rust,前端的第二条命! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ SEO 之 UGC 不做落地页和 ADS 无效流量解决方法 - 串串狗小刊 SEO 之 HARO 四两拨千斤大法 - 串串狗小刊 SEO 里的 schema 和 积沙成塔 - 串串狗小刊 AI 生成的代码太啰嗦 今日 SEO 小经验分享 - 串串狗小刊 时代在轮回,2026 年做网站又开始流行起来 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 讲一下谷歌 SEO 常用的 8 个工具 - 串串狗小刊 五个谷歌 SEO 外链建设小妙招 - 串串狗小刊 分享几个 独立站 SEO 外链 建设的小经验 - 串串狗小刊 讲几个 出海独立开发 获取流量的经验 - 串串狗小刊 一个故事,把大厂互联网架构 70+ 概念串完 - 串串狗小刊 2026 年最新的 人工智能 学习路线(为期三个月) - 串串狗小刊 为什么现在的密码喜欢使用 2FA(TOTP、passkey )? - 串串狗小刊 openAI 团队告诉你,怎么把 Codex 用到极致! - 串串狗小刊 fetch 和 axios ,两者选谁? - 串串狗小刊 五年了,Zed 终于发布 1.0 版本了,简单聊聊 - 串串狗小刊 由 27 个荒废的项目,总结的 5 个失败的真相 - 串串狗小刊 今天再聊聊 Codex 的使用 - 串串狗小刊 分享几个短小精悍实用的 js 代码 - 串串狗小刊 54 天,26.9 万次连接:互联网到底有多吵? - 串串狗小刊 AI 时代前端开发最实用的 5 种设计模式 - 串串狗小刊 说 3 个前端新手可能不知道的技巧 - 串串狗小刊 Vite 这个前端打包工具是怎么工作的呢? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ Vibe coding 一词发明人说 Agentic Engineering ,守住软件质量才是未来 - 串串狗小刊 如何利用 AI 理解新项目、接手新项目? - 串串狗小刊 2025 年主流的前端技术全集合 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 德鲁・布伦尼格提出是 10 个 AI 编程时代的实践经验 - 串串狗小刊 其实 React 有点难用 - 串串狗小刊 今天简单聊聊 tailwindCSS - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 今天再聊聊 AI GEO,以及改善其效果的办法 - 串串狗小刊 Claude Code 向 Codex 的习惯迁移 - 串串狗小刊 几个提高 AI 提示词撰写能力的技巧 - 串串狗小刊 前端优化:核心 SEO 网页指标优化 LCP、INP 的思路 - 串串狗小刊 一个很冷门的 JS 知识点:逗号操作符 - 串串狗小刊 在 JS 中为什么要少用 class ? - 串串狗小刊 前端和后端是怎么连接的?API、RESTful、JSON、CORS都是什么? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 八个软件工程师需要了解的定理法则 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 思想实验:如果 AI 出现在 2010 年会发生什么? - 串串狗小刊 求求你别再 .filter().map().sort() 了 - 串串狗小刊 一文讲清 16 个 React 常用钩子的机制和使用场景 - 串串狗小刊 三大反向代理 Nginx、Traefik、Caddy 的区别是什么? - 串串狗小刊 为什么我觉得 adhd 病是一种智商税 ? 为什么有些人天生就不快乐 ? - 串串狗小刊 讲 3 个我这几天刚刚遇到的 CSS 里的小技巧 - 串串狗小刊 SQL数据库中什么情况该加索引?以及常见的陷阱。 - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 2026 年前端死透了吗?还能入行吗? - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 你其实永远也用不到数据库! - 串串狗小刊 - 聊AI、互联网、前端技术 ~ 八个和 Claude Code 编码时的小技巧 - 串串狗小刊 10 分钟快速入手 React 概念,然后开始干活儿 - 串串狗小刊
注意,JS 里的 JSON.parse() 也有安全隐患! - 串串狗小刊
独元殇 · 2026-06-09 · via 串串狗小刊 ⭐️

其实我们天天使用的那个 JSON.parse() 也是一个坑。

而且还挺危险。有点像 PHP 里面的注入一样。

首先就是它是干什么的。

// 一个JSON格式的字符串
const jsonString='{"name":"在线企业交易平台","listings":5000,"types":["网站","电商","SaaS","应用"]}';

// JSON.parse() 将其转化为对象
const businessData=JSON.parse(jsonString);

console.log(businessData.name); // 输出: 在线企业交易平台
console.log(`共${businessData.listings}个待售业务`); // 输出: 共5000个待售业务

它就是把 JSON 转化为 JavaScript 可直接使用的对象。

不要使用反模式来解析 JSON

我们经常用其,在 request 请求回复、cookie、localstorage、readfilesync 等读取上、但是....

请看大屏幕!(当然,这个坑在 2023 年以后被部分浏览器修复了,包括 node 18.13+ )

const maliciousInput = '{"__proto__":{"hasAdminPrivilege":true}}';
const targetObj = {};
JSON.parse(maliciousInput, (key, value) => {
  targetObj[key] = value;
  return value;
});
//------
// 从这里开始,所有新创建的 {} 这种空对象,就都完蛋了。
console.log({}.hasAdminPrivilege); // 输出: true!全局原型被成功篡改
console.log(new Object().hasAdminPrivilege); // 输出: true! 一样!

有没有觉得背后一凉!

俺就是读了一个装着 JSON 的字符串,怎么就把全局变量给污染了呢?

这是著名的【原型污染漏.洞】我估计现在的很多前端,都不知道有这个知识点,这个特性(bug)危害还挺大,神不知鬼不觉,就能绕过验证,甚至篡改一些属性,比如给你加个 rm -rf / ,你天真的就发过去执行了。

虽然很多浏览器已经修复这个 bug ,但是我们依然不要使用 JSON.parse(value, (key, value)=>{ a[key]= value;return value;}); 这种语法。因为直接写 JSON.parse(value) 其实就够了,是很安全的。

(你可能会问,我一直都这样写的啊,谁非得拆开写?对!正常人可能懒得这样写,但是凡事总有意外。因为 jqurey 的源代码,以前就这样写的, 然后就出事了.... 影响够大吧!)

当然,如果你非要这样写,可以试试过滤掉这三个特殊的值。

function secureJSONParse(str) {
  return JSON.parse(str, (key, value) => {
    if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
      throw new Error('Forbidden key detected');
    }
    return value;
  });
}

如果你是小白,不知道 proto 、constructor、prototype 都是什么的话。我简单说说:

首先是第一个,叫【公开访问器属性】,在 2024 年之前, proto 是一个,你可以理解为是指针,指的 Object.prototype ,也就是全局对象的根原型,全部对象都改了!不过现在这个 bug 刚刚被修,但是你知道,全世界大把的浏览器,都是好几年前没更新的,所以危害依然比较大。

况且.... node 版本,为了稳定,不乱改版本,全世界有多少服务器没更新?

而 constructor、prototype 也差不多,都是Object.prototype 的属性,都能顺藤摸瓜改变全局。

虽然 2026 年,修复很好了,但是依然还有点危险,还能污染全局:

img

上面让人惊悚的代码:

// 深度合并
function deepMerge(target, source) {
  for (const key in source) {
    const val = source[key];
    val && typeof val === 'object' && !Array.isArray(val)
      ? deepMerge(target[key] || (target[key] = {}), val)
      : (target[key] = val);
  }
  return target;
}

// 污染
deepMerge({}, {"constructor":{"prototype":{"isAdmin":true}}});

// 验证全局污染
console.log({}.isAdmin);    // true
console.log(new Object().isAdmin); // true
console.log([].isAdmin);    // true

我们要合并一些 对象,很容易写这种函数代码,,,如果有个坏人给你那个污染的属性,,,那也还是有危险。起码现在这个 bug ,2026-6 月了,还是存在。

做 SaaS 用 zod

我们制作 node 应用、或者前端应用时,要过滤数据。

自己写吗??? 重复造轮子干什么,如果要考虑全面的话,其实一个验证数据的函数,你可能要写很长很长。

其实在前端、全栈业内,有成熟的解决方案,一个叫 zod ,另一个叫 Joi , 前者更流行,推荐使用。包括今天讲的这个 JSON.parse() 大坑,也可以过滤掉。

使用起来,简单的很:

import { z } from 'zod';

// 定义用户数据的结构契约
const UserSchema = z.object({
  id: z.number().int().positive(),
  name: z.string().min(1).max(50),
  email: z.string().email(),
  isAdmin: z.boolean().optional().default(false),
});

只需要 z 一下,数据就安全了。

如果是做 SaaS 的,这个是必备知识点。因为用 node 的开发者,普遍是前端兼职的,一般不太注重数据安全过滤。zod 一定得知道,起码在和 AI 对话时,关键的信息提取,得加一个 zod 词语。