Nodejs最安全的路径和文件处理

use*_*195 -4 javascript path node.js

当涉及到客户端的文件访问时,需要采取哪些安全措施。

例如,../当我们涉及相关功能时,他们可以用来访问根目录path

编写路径相关代码最安全的方法是什么?

use*_*195 5

1)首先检查Poison Null字节

if (filename.indexOf('\0') !== -1) {
  return respond('That was evil.');
}
Run Code Online (Sandbox Code Playgroud)

2)白名单

if (!/^[a-z0-9]+$/.test(filename)) {
  return respond('illegal character');
}
Run Code Online (Sandbox Code Playgroud)

3)防止目录遍历

var rootDirectory = '/var/www/';

var path = require('path');
var filename = path.join(rootDirectory, userSuppliedFilename);
if (filename.indexOf(rootDirectory) !== 0) {
  return respond('trying to sneak out of the web root?');
}
Run Code Online (Sandbox Code Playgroud)

参考