2014-12-18 4 views
0

Я хочу, чтобы соединить два пути:Как проверить вредоносный путь на корневой каталог?

var path = require('path'); 
path.join(root, requestPath); 

Как предотвратить путь, как ../../../../../etc/passwd? Какая практика?

var isMalicious = function(path, root) { /* HOW TO */ }; 
+0

Изменить разрешения ../etc/passwd, чтобы сделать его недоступным? –

+1

Используйте некоторую утилиту пути, чтобы разрешить данный путь с префиксом 'root' в качестве префикса к его абсолютному представлению (я думаю, это то, что уже делает path.join'). Затем проверьте, все ли это в 'root'. – Gumbo

ответ

0

Довольно много того, что сказал Гумбо. Вот пример кода:

var path = require('path'); 
var root = '/var/www/app/'; 

var path = require('path'); 
var filename = path.join(root, requestPath); 

if (filename.indexOf(root) !== 0) { 
    // someone is trying to break out of root! 
} 

Это стоит прочитать для получения дополнительных сведений о безопасности. How can I secure my code?

+1

Убедитесь, что 'root' заканчивается символом'/'. – Gumbo

Смежные вопросы