将 req.body 直接传递给 mongo db 时的安全性



当我将req.body直接传递给数据库(我使用猫鼬和nodejs(时,它是否考虑了安全问题?

假设我有一个人员模式(名称:字符串,年龄:数字(,并且在 req.body 中,有人尝试向其添加一个额外的字段。在将字段传递给数据库之前,我是否需要仅提取所需的字段

const {name, age} = req.body
const person = new Person({name, age})
person.save()...

或者这没关系,因为猫鼬已经照顾好了

const person = new Person(req.body)
person.save()...

注意:我问的是额外的字段,而不是我们是否应该对在架构中声明的字段进行消毒

不,这本身不是安全问题。
这也与猫鼬无关。这就是纯粹的JavaScript

您正在对req.body参数使用解构赋值,因此您正在提取精确指定的参数。

const body = { name: 'bob', age: 12,  malicious_entry: "rm -rf" };
let {name, age} = body;
console.log(name, age, malicious_entry)  // ReferenceError: malicious_entry is not defined

如果将其传递给构造函数:

class Person {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
let {name, age, malicious_entry} = body;
let person = new Person(name, age, malicious_entry);
console.log(person)  // Person { name: 'bob', age: 12 }

我让你选择是否要直接在数据库中记录互联网请求而不检查它,但显然额外的参数不是问题。

最新更新