我想在我的应用中添加数据库功能。我担心的一件事是,一个精通的对手可以只监控Chrome的网络表并直接点击我的终端。
最初,我认为我会在快递服务器后面锁定数据库调用,至少隐藏一些东西,但我觉得这还不够好。
在 BEST 案例中,他们绕过我的整个前端,并可以访问我的各种数据库调用。在最糟糕的情况下,他们可以获得大量用户信息。如果我在快递方面只有一个暴露的不安全/users/{id}
端点,那么攻击者就有可能枚举所有用户。
这些东西通常如何处理?由于整个应用程序都在“浏览器中”存在,因此在正常的非单页面应用程序设置中不存在大量独特的安全威胁。
修改
一个可能的解决方案是Auth0来记录用户,将其关联到我的数据库中的帐户,然后使用JWT保护每个端点,但我宁愿不必为更多支付服务,如果我不需要。
答案 0 :(得分:0)
您可以创建自己的中间件,在提供敏感信息的路线上添加额外的保护层:
import adminRouter from './admin'
app.use('/admin', (req, res, next) => {
if (req.user.isAdmin) {
next()
}
els {
next('you must be an admin!')
}
})
app.use('/admin', adminRouter)