阻止用户访问Express中的子域

时间:2014-02-18 03:29:46

标签: node.js http express get

我是Web开发和Node.js / Express的新手。我有一台Express服务器。在我的客户端,我发送数据库中的一些数据的GET请求。 GET请求由

处理

app.get( '/pathname', controller.getsomedata );

问题是,用户现在可以在浏览器中输入URL domainname.com/pathname并定向到该路径名。如果他们添加某个查询domainname.com/pathname?query,他们就能够从数据库中检索数据(这应该发生),但我更喜欢如果GET请求只发生在客户端代码中,/ pathname,不是当用户在浏览器中输入它时。

有更好的方法来执行我的GET请求吗?或者是否有办法限制用户访问/ pathname。

我为新手问题道歉,但我不知道怎么说得好,以便谷歌搜索解决方案。谢谢!

2 个答案:

答案 0 :(得分:1)

这是不可能的。如果您的客户端代码能够访问某些内容,恶意用户也可以这样做。

您可以使用自定义HTTP标头或类似的东西来缓解此问题,但最好验证服务器端的所有数据。

答案 1 :(得分:0)

允许整个客户端请求,因为数据库查询可能会导致安全问题。因此,请务必验证查询参数并将其用作数据库查询条件。 如果要从HTTP查询参数中自由查询DB,则应该对路由进行身份验证/授权。

app.get( '/pathname', function(req, res, next) {
    if (confirmThisRequestIsFromMe(req)) {
        next();
    } else {
        res.send(401);
    }
}, controller.getsomedata );