koa-static 报错BadRequestError: Malicious Path
在使用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
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