2016-09-30 159 views
0

作爲新的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

回答

1

黑客可以做任何事情。 您可以讓用戶運行Web服務器的權限來執行您的任務打算執行的任務。

一般情況下儘量避免使用根部(將錫箔帽放在上面)。

+0

會很感激,如果你能提供一個具體的例子來說明攻擊者如何在我的服務器上執行命令。它是否通過Web服務如'http://xx.xx.xx.xx/xxdad?q = xxx <在這裏插入一些命令>'。或者,也許有其他的方式,我想知道 – daisura99

+0

@ daisura99其實我不能給你一個例子,我不會入侵:)。但是如果他找到了執行命令的方法,他可以做任何他喜歡做的事情。 –