为什么 Express 接口不能直接把 req.body 整体传给数据库层,白名单过滤怎么做?
围绕“为什么 Express 接口不能直接把 req.body 整体传给数据库层,白名单过滤怎么做”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明越权写字段(如 role)的风险,并给出在路由层用 pick/解构白名单的方案位置,不讲 ORM 层防护。
全栈开发 · 安全面试题第 1 页,显示第 1–10 题,共找到 10 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“为什么 Express 接口不能直接把 req.body 整体传给数据库层,白名单过滤怎么做”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明越权写字段(如 role)的风险,并给出在路由层用 pick/解构白名单的方案位置,不讲 ORM 层防护。
集中在app.all与app.use的方法集合、路径匹配粒度差异。通过断言all只能完整路径匹配而use是前缀匹配,并给出鉴权场景下选型标准,避免中间件误拦截或缺失。
围绕“用客户端传来的文件名直接拼接保存路径,在 Express 上传服务里会造成什么漏洞,如何防”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 ../../ 路径穿越风险,以及用随机生成文件名、path.basename 过滤、限定上传目录三道防线的具体做法,不讲对象存。
围绕“NestJS 的 ConfigurableModuleBuilder 相比手写 forRoot 有什么优势”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明它如何自动生成 register/forRoot 及 options token 的注入方式。
围绕“NestJS 守卫和 Express 中间件在职责上如何分工”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖从执行时机、能否访问 ExecutionContext、依赖注入能力三方面区分。
围绕“NestJS 中什么时候必须用 @Inject() 装饰器显式注入”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要讲清清基于类的注入与基于字符串/Symbol token 注入的区别。
解释NestJS中imports、providers、exports的协作规则:Provider默认私有,必须导出才能被其他模块注入。通过机制说明、具体场景和边界条件,帮助理解模块作用域与依赖可见性。
本文解释 NestJS @Optional() 装饰器的作用:依赖缺失时注入 undefined 而非抛错;说明其适用场景、判空要求,以及不能替代默认值或条件注入等边界。
围绕“NestJS 支持属性注入吗?与构造函数注入相比应如何选择”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 @Inject() 属性注入的适用场景(如继承基类)及可测试性差异。
围绕“NestJS 中的依赖注入机制是如何工作的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明 NestJS 如何通过构造函数注入解析 Provider。