express中公用文件夹外的文件是否安全



我正在使用Express构建一个网站。

我有一个页面,上面有一个添加文章的表单。我的网站上没有敏感数据,但我不希望人们能够发布文章。

所以我的问题是:人们可以访问任何不在公用文件夹中的文件吗?

// Public directory
web.use(express.static(path.join(__dirname, 'public')));

页面将使用令牌访问(令牌将被加密并存储在json文件中(公共文件夹外(

像这样:

// json file import
var data = require('../data/fileThatIsSafe.json');
// page render
web.get('/myPage/:token?', function(res, req) {
if(encrypt(req.params.token) == data.token) {
res.render('myPage');
}
}

我不能确切地说出令牌与您的问题有什么关系,但如果您只是在问您的express.static()代码是否安全:

web.use(express.static(path.join(__dirname, 'public')));

那么,答案是express.static()(默认情况下(不允许访问您传递的目录之外的任何文件。在您的示例中,它只提供对public目录层次结构的访问。如果您查看express.static()的文档,您将看到dotfiles的一个选项,该选项具有以下设置:

Possible values for this option are:
"allow"  - No special treatment for dotfiles.
"deny"   - Deny a request for a dotfile, respond with 403, then call next().
"ignore" - Act as if the dotfile does not exist, respond with 404, then call next().

此选项的默认值为"ignore",并将返回404。

所以我的问题是:人们可以访问任何不在公用文件夹中的文件吗?

不通过express.static()中间件。因此,人们访问服务器上其他文件的唯一方法是,如果你有明确允许他们访问的其他路径请求这些文件。

在您显示的另一个路由中,似乎确实需要在发送内容之前随路由一起发送适当的令牌。当令牌不匹配时,特定的路由处理程序需要发送某种响应(可能是错误响应(。

相关内容

  • 没有找到相关文章

最新更新