我在React JS中使用rematch(https://github.com/rematch/rematch),并在后端使用其Feathers。如果我想在特定条件下从数据库中获取记录,则可以在React代码的API调用中传递查询。 例如。
const empData = await employeeService.find({
query: {
$and:[
{employeeId: payload.empIId},
{name:"ABC"}
]
}
});
这直接将查询传递给自动生成的羽毛服务,并且也向我提供了预期的结果。
我的问题是,从前端传递这些类型的查询(可能比这更复杂)是一种好习惯吗?请详细说明答案(优点和缺点等)
答案 0 :(得分:3)
我们成功且广泛地在多个项目中做到了这一点。它创造了最大的灵活性。可以在客户端中实施更改,而不需要在客户端和服务器中进行更改。
这应该与不信任客户端的服务器结合使用。服务器应清理和限制输入查询的速率,以确保客户端没有收到不应接收的任何内容。
答案 1 :(得分:0)
让客户端直接执行查询通常不是一个好主意。您事先不知道该查询,这意味着任何人都可以发布可操纵的查询,该查询将束缚您的数据库,从而有效地DDOS-您。由于您不检查输入内容,因此无法防御此类攻击。
验证每个系统边界上的输入始终是一个好主意。