从Node.js的运行命令使用sudo

问题描述:

作为新的Node.js,我有这个问题..从Node.js的运行命令使用sudo

我看到它在该节点不应该以root身份运行几个地方,如this提及。我只是使用节点来设置简单的 Web服务并执行需要root访问权限的python脚本。我只是不明白危险在哪里,正如可能是的黑客那样。

我的node.js文件是这样的: - 如果有任何安全问题

var http = require('http'); 
var express = require('express'); 

var app = express(); 


app.use(express['static'](__dirname)); 


app.get('/alert', function(req, res) { 
    var addr = req.query.addr; 
    //~ need to check if it is a valid address?? 
    console.log('Received addr -' + addr); 

    var spawn = require('child_process').spawn; 

    var process = spawn('python', ['custom-text-led/custom-text.py', addr]); 

    process.stdout.on('data', function(data) { 
     console.log('Data:' + data); 
    }); 


}) 

app.get('*', function(req, res) { 
    res.status(404).send('Unrecognized API call'); 
}); 

app.use(function(err, req, res, next) { 
    if (req.xhr) { 
     res.status(500).send('Opps, something went wrong'); 
    } else { 
     next(err); 
    } 
}); 

app.listen(3000); 

console.log('App server running at port 3000'); 
+1

如果你不知道黑客可以做什么,那并不意味着黑客无法做任何事情。这只意味着你不是黑客。这就是成为黑客的全部观点:看到当每个人都认为什么都不能做时可以做什么。 – zvone

黑客可以做任何事情。 您可以让用户运行Web服务器的权限来执行您的任务打算执行的任务。

一般情况下尽量避免使用根部(将锡箔帽放在上面)。

+0

会很感激,如果你能提供一个具体的例子来说明攻击者如何在我的服务器上执行命令。它是否通过Web服务如'http://xx.xx.xx.xx/xxdad?q = xxx '。或者,也许有其他的方式,我想知道 – daisura99

+0

@ daisura99其实我不能给你一个例子,我不会入侵:)。但是如果他找到了执行命令的方法,他可以做任何他喜欢做的事情。 –