Restify静态服务公开其他文件
Restify static serve exposing other files
我使用restify for node来创建一个简单的API。我想要一个目录/public
,人们可以简单地浏览到该目录并下载他们浏览到的文件
为了实现这一点,我在/routes/public.js
:中使用了
server.get(/'/public'/?.*/, restify.serveStatic({
directory: __dirname + '/../'
}));
正如我的文件结构所示:
index.js
/routes
public.js
/public
files
to
be
served
然而,我注意到了一个很大的安全问题。通过浏览http://domain.com/public/../index.js
,可以下载源代码!显然,我不希望这种情况发生。
这是权限工作还是我应该做其他事情?感谢
Restify会进行检查,以确保您没有提供指定目录之外的文件。您将静态文件的根目录指定为__dirname + '/../'
,它是应用程序的根目录。这意味着您的应用程序中的所有文件都可以通过静态服务。如果您只希望restify提供./public/
文件夹中的文件,则必须将其用作目录。
这个问题源于他们处理将路由映射到静态文件的方式令人困惑(在我看来计划不周)。正如您所说,完整的路由包含在请求文件的路径中。这导致了像这样的尴尬局面。您有一个公用文件夹,并且还希望路由包含公用文件夹。这意味着您必须有一个./public/public
文件夹来存放您的资源。另一种方法是在你的路线中不包括公众。你可以这样设置你的静态处理程序:
server.get(/.*/, restify.serveStatic({
directory: './public/'
}));
则到/somefile.txt
的请求将路由到"/public/somefile.txt'.
相关文章:
- 如何将JS文件从其他文件夹链接到页面
- 使用metro-uiJS对话框调用其他文件html
- 先在Angular中加载配置文件,然后再加载其他文件
- 如何忽略node.js中其他文件或组件所需的文件
- 是否可以在其他文件中获取 AJAX 成功变量的值
- 如何设置观察程序将文件复制到同一文件夹中的其他文件
- NodeJS-从其他文件导入函数,并像以前一样使用
- 只上传一定大小以下的文件,并在jQuery中丢弃其他文件
- 如何使用其他文件中的react组件
- Durandal从其他文件中点击调用函数
- express/如何将路由参数传递到其他文件
- 节点.js socket.io 网络服务器提供索引.html以外的其他文件
- 从其他文件访问 Ext 甘特 JS 变量
- 从其他文件初始化微小的Mce
- 在页面加载的所有其他文件之后加载动画 gif
- 加载初始文件后无法加载其他文件
- 设置 ng.其他文件中的控制器
- 包括来自其他文件的外部脚本标记
- gulp-jshint 指定应该通过 jshint() 的文件并忽略其他文件
- 括号中的JSLint:有没有办法使用其他文件中定义的变量