除此之外,还有一种是NodeJS语法本身特有的漏洞,即操作符空格漏洞。比如下方的示例代码:
const session = require('express-session');const express = require('express');const app = express();
app.get('/secret', (req, res, next) => { if(req.session.guestǃ=true) { res.send("secret_string"); } else { res.send("Not available to guests"); }})
读到这里可以先暂停,仔细探究上述代码中的安全漏洞所在。这段代码曾经被我们作为多次招聘的题目,但遗憾的是没有人能够最终识别到正确的漏洞位置。
答案揭晓:
漏洞位置在于上述代码中的这行代码:
if(req.session.guestǃ=true) {
如果乍一看不太理解,我们可以先看理解下漏洞原理。
在这行代码中,req.session.guest!=true没有留空格,导致req.session的对象guest!是赋值操作,判断语句始终为真。
漏洞原理非常简单,理解之后便很容易可以找到对应的修复方法,即采用强类型的操作符来做判断。
许多复杂的安全漏洞也如上述示例,如魔术一般,在揭示谜底之前显得尤为惊人和壮观,但了解谜底、恍然大悟之后,之后每每遇见同类手法便又显得索然无味。但与魔术不同的是,这样的“谜底”可以帮助开发人员和安全人员一次次避免可能导致的安全风险或安全漏洞。
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点!真正的体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!