我是Web开发和Node.js / Express的新手。我有一台Express服务器。在我的客户端,我发送数据库中的一些数据的GET请求。 GET请求由
处理 app.get( '/pathname', controller.getsomedata );
问题是,用户现在可以在浏览器中输入URL domainname.com/pathname并定向到该路径名。如果他们添加某个查询domainname.com/pathname?query,他们就能够从数据库中检索数据(这应该发生),但我更喜欢如果GET请求只发生在客户端代码中,/ pathname,不是当用户在浏览器中输入它时。
有更好的方法来执行我的GET请求吗?或者是否有办法限制用户访问/ pathname。
我为新手问题道歉,但我不知道怎么说得好,以便谷歌搜索解决方案。谢谢!
答案 0 :(得分:1)
这是不可能的。如果您的客户端代码能够访问某些内容,恶意用户也可以这样做。
您可以使用自定义HTTP标头或类似的东西来缓解此问题,但最好验证服务器端的所有数据。
答案 1 :(得分:0)
允许整个客户端请求,因为数据库查询可能会导致安全问题。因此,请务必验证查询参数并将其用作数据库查询条件。 如果要从HTTP查询参数中自由查询DB,则应该对路由进行身份验证/授权。
app.get( '/pathname', function(req, res, next) {
if (confirmThisRequestIsFromMe(req)) {
next();
} else {
res.send(401);
}
}, controller.getsomedata );