frontend-tips 前端安全要点:parseInt 基数、新标签页链接与严格相等的4个隐藏陷阱

发布时间:2026/10/21 3:17:16

frontend-tips 前端安全要点:parseInt 基数、新标签页链接与严格相等的4个隐藏陷阱 frontend-tips 前端安全要点parseInt 基数、新标签页链接与严格相等的4个隐藏陷阱【免费下载链接】frontend-tipsSuper tiny, quick tips, tricks and best practices of front-end development项目地址: https://gitcode.com/gh_mirrors/fr/frontend-tipsfrontend-tips是一个收录了 170 条简洁技巧的前端最佳实践合集覆盖 JavaScript、HTML 与 CSS。本文从中精选4 个容易被忽视的前端安全陷阱parseInt未传基数、新标签页链接缺少relnoopener、未用严格相等比较。这些小问题可能让数字变得面目全非、页面被恶意劫持或让错误逻辑悄悄通过。 陷阱 1parseInt 不传基数 → 字符串可能被当八进制解析parseInt(value, radix)接收两个参数第二个就是基数进制的基。如果不传JS 引擎会自动猜以0x/0X开头 → 按16 进制十六进制解析其他情况 → 按10 进制十进制解析在旧版 JavaScript 中以0开头的字符串 → 按8 进制八进制解析不同版本、不同浏览器的推断规则并不一致同样的代码在不同设备上可能得到不同结果。解法很简单——始终显式传入基数parseInt(0xF); // 15自动推断为十六进制 parseInt(0xF, 16); // ✅ 15明确指定十六进制 这一陷阱在项目中的完整说明见 always-pass-the-radix-to-parseint.mdx。️ 陷阱 2强行指定错误基数会静默返回 0更隐蔽的坑是传入的基数与字符串不匹配时parseInt不会报错而是安静地返回 0。parseInt(0xF, 10); // 0 —— 按十进制解析时x 不是合法数字这种静默失败比报错更危险业务逻辑会带着 0 继续往下跑bug 极难定位。关联技巧想把整串完整转为数字可用一元运算符参见 convert-string-to-number.mdx解析前先去除空格否则parseInt(12 345)只会得到 12参见 trim-the-spaces-before-parsing-a-number.mdx️ 陷阱 3target_blank 不加 relnoopener → 链接劫持用target_blank在新标签页打开链接时若不补充安全属性新标签页能通过window.opener访问原页面的window对象。恶意新页面可以这样做window.opener.location http://fake-website.example;这会把你的原始标签页重定向到一个假网站。如果假站 UI 与真站一模一样用户很可能毫无察觉地继续操作甚至输入账号密码——这就是经典的**反向标签钓鱼reverse tabnabbing**攻击。解决给链接加上relnoopener。更强的写法是relnoreferrer它除了修复上述安全问题还会阻止浏览器向新页面发送 Referer 头。!-- ❌ 不要这样写 -- a target_blank链接/a !-- ✅ 正确写法 -- a target_blank relnoopener链接/a部分现代浏览器Chrome 88会自动补充noopener行为但为了兼容旧浏览器仍建议手动写上该属性。详细说明见 always-use-noopener-or-noreferrer-for-links-opened-in-new-tabs.mdx。⚖️ 陷阱 4 不写 → 隐式类型转换比较变量时请始终使用严格相等运算符而不是宽松相等的。后者会先做类型转换再比较结果往往反直觉0 false; // true 0 ; // true 0 []; // true 0 false; // false ✅只比较值 类型不会发生任何转换意外。原理与更多示例见 use-the-strict-equality-operator-when-comparing-variables.mdx。✅ 快速自查三秒核对表场景❌ 不要✅ 应该字符串转数字parseInt(0xF)parseInt(0xF, 16)新标签页链接target_blanktarget_blank relnoopener变量比较a ba b这四个陷阱有一个共同点它们不报错只是悄悄给出错误结果。写代码时把假设显式声明出来传基数、写全属性、用严格相等就是最实用的前端安全实践。更多技巧可浏览项目的 README.md。【免费下载链接】frontend-tipsSuper tiny, quick tips, tricks and best practices of front-end development项目地址: https://gitcode.com/gh_mirrors/fr/frontend-tips创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/21 10:18:47

C++模板编程:泛化与特化的核心原理与实战应用

1. 模板、泛化、特化:C元编程的基石与实战拆解 干了这么多年C,我发现一个挺有意思的现象:很多朋友能把STL里的 vector 、 map 用得飞起,各种算法信手拈来,但一被问到“模板特化怎么写”、“偏特化用在哪儿”&#…

2026/10/20 21:21:36

BlueDoc GraphQL API参考:文档、评论与目录接口完全说明

BlueDoc GraphQL API参考:文档、评论与目录接口完全说明 【免费下载链接】bluedoc An open-source document management tool for enterprise self host. 项目地址: https://gitcode.com/gh_mirrors/bl/bluedoc BlueDoc 是一款面向企业的开源自托管文档管理工…

2026/10/21 20:45:30

springboot整合Knife4j

一、前言 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案(在非Java项目中也提供了前端UI的增强解决方案),前身是swagger-bootstrap-ui,取名knife4j是希望她能像一把匕首一样小巧,轻量,并且功能强悍! 二、快速使用 2.1 依赖…

2026/10/21 20:45:30

软件定义汽车---目的、实现途径与架构演进

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 假若你的生活不够好,不够努力,那么,加油努力吧,不要抱怨,起而行,迎头赶上,方是正途。假若你已经拥有很多,却依然活得不快乐,那么,让自己慢…

2026/10/21 20:45:30

接口超时之后,FDE为什么不能直接再试一次

FDE岗位实务指南 第18篇上一篇的四道检查管的是"动作发出之前"。这一篇处理动作发出之后的硬情况:请求发出去了,响应没回来。页面转圈,然后提示超时。此刻用户的直觉动作只有一个:再点一次。产品团队的直觉通常也一样&…

2026/10/21 20:45:30

Windows系统计时器处理

Windows系统计时器处理 时钟中断 时钟中断属于可屏蔽中断(INTR)的一种,可以被 CLI 延迟,也可以被中断控制器屏蔽。关中断期间,时钟中断会处于 pending 状态,等开中断后再处理。 时钟中断的产生 产生时钟中断…

2026/10/21 20:40:28

从Andorid攻城狮转Java后端开发(2)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑