2016-07-29 17 views
2

這可能看起來像一個愚蠢的問題,但我不明白爲什麼你會在你的JavaScript文件中編寫SQL查詢。客戶端無法看到JavaScript文件?所以如果你有類似的東西:在Node.js程序中運行純JavaScript查詢是否存在安全問題?

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
host  : 'localhost', 
user  : 'foo', 
password : 'bar', 
database : 'db' 
}); 

connection.connect(); 

connection.query('SELECT * from table', function(err, rows, fields) { 
if (!err) 
console.log('The query returned ' + rows); 
else 
console.log('An error occurred.'); 
}); 

// rest of js code 

這不是一個安全問題嗎?有人請教育我。

+0

如果你不爲他們服務 - 你怎麼看他們的內容? – zerkms

+0

Javascript只是一種語言,如果代碼只運行在node.js服務器上,客戶端永遠不會看到 – dtkaias

+0

@zerkms正確。但是我認爲大多數擁有JavaScript知識的人都會理解,現代JavaScript可以是純粹基於服務器的流程,而不僅僅是基於瀏覽器。 – JakeGould

回答

4

如果以某種方式故意將其作爲瀏覽器的JavaScript(例如<script>標記)發送給客戶端,那麼絕對可以看到。它也可以被改變。

如果這是在Node.js進程中運行的Node.js代碼,那麼客戶端無法獲得此代碼,除非您完全不顧一切地將它們部署到「web安裝」位置, ,那就是你的網絡服務器不經意間發佈的所有文件的目錄索引,有人可以點擊並瀏覽,或者他們可能猜到這個名字的位置,如index.jsapp.js以查看會發生什麼。

僅僅是因爲JavaScript的某些東西並不意味着它是用於瀏覽器,也不是說它可以在瀏覽器中運行。

+3

「僅僅因爲JavaScript的某些東西並不意味着它用於瀏覽器,也不意味着它必須在瀏覽器中運行。」我認爲大多數人並不完全瞭解現代世界的非常好的關鍵點。 JavaScript的;它不僅僅是一種基於瀏覽器的語言。 – JakeGould

+0

@tadman所以假設我的項目根目錄中有一個節點目錄,其中包含我所有的node.js文件。客戶如何無法達到所含內容的最高點?這是通過htaccess或其他? –

+0

除非您故意將Node項目設置爲虛擬主機,並將文檔設置爲Node源代碼,否則您不想讓Node應用程序出於某種原因自行提供服務,這不是一個問題。 *客戶如何能夠獲得這些源文件是您應該問的問題。 – tadman

相關問題