koa-static 报错BadRequestError: Malicious Path
2019-11-16
nodejs
7448
在使用koa-static
时
类似: <host>//some/path
带两个斜杠的 会报
BadRequestError: Malicious Path //(有害的路径)
这是koa-static
的一种安全策略,保证内部文件不被访问
正常路由<host>/some/path
会被解析为some/path
访问当前静态资源目录下的资源。
而//some/path
会被解析为 /some/path
访问了根路径的绝对路径
这里绝对路径会被判定是有害路径
具体代码可见:https://github.com/pillarjs/resolve-path/blob/master/index.js#L76
判断绝对路径可以参考: https://github.com/sindresorhus/path-is-absolute // Running on any OS
pathIsAbsolute.posix('/home/foo');
//=> true
pathIsAbsolute.posix('C:/Users/foo');
//=> false
pathIsAbsolute.win32('C:/Users/foo');
//=> true
pathIsAbsolute.win32('/home/foo');
//=> false
除此之外koa-static 还杜绝以下几种情况的路径:
- 路径中包含
\0
的路径 - 超出当前目录的路径如
<host>/\.\./path