簡體   English   中英

編譯后的JavaScript代碼的安全性如何?

[英]How secure is compiled JavaScript code?

我們正在使用具有express的node.js作為AES256獨立編碼數據的服務器網關。 數據(和服務器代碼)位於我們設施中密閉的房間中的一台服務器上,只能通過硬線以太網訪問。 接入點是專用的硬接線設備。 如果有人能夠竊取該服務器,則他們可以訪問源代碼。 他們將擁有我們編碼數據的密鑰和解碼算法。

如果我們編譯JavaScript node.js代碼並將其僅留在服務器上(而不是JavaScript源代碼)怎么辦?

編譯過程是否提供足夠的安全性,以使有動機的小偷無法識別用於保護存儲的加密數據的編碼/解碼技術?

編譯過程是否提供足夠的安全性,以使有動機的小偷無法識別用於保護存儲的加密數據的編碼/解碼技術?

沒有。

首先,您不會說“編譯過程”的真正含義。 沒有使用Javascript的過程類似於將C ++編譯為二進制匯編代碼。 Javascript是一種解釋性語言,而不是一種編譯語言。 Javascript解釋器可能在JS引擎內部執行了一個編譯步驟,但這不是您自己可以做的。 node.js Javascript引擎需要純文本合法Javascript作為輸入。

因此,您將在Javascript代碼上運行的任何編譯過程都只會使其壓縮或模糊。 它仍然是純文本Javascript代碼。 它仍然可以被任何人運行。 任何人仍然可以診斷它的作用或工作方式。 對其進行模糊處理(例如用簡短的一兩個字母名稱替換描述性的變量名)會使代碼分析和理解變得更加繁瑣,但這只是一個暫時的障礙,任何堅定的黑客仍然可以克服。

如果有人能夠竊取該服務器,則他們可以訪問源代碼。 他們將擁有我們編碼數據的密鑰和解碼算法。

您需要從物理上保護對服務器和該服務器上代碼的訪問以保護它,並且您將需要依靠該保護。


如果使用的打包工具創建了一個可運行的.exe文件,請記住,這並不是真正在編譯Javascript。 它只是將其包裝到.exe的外殼中,以便本機代碼.exe可以運行,可以從.exe中提取您的JavaScript,可以將其放入硬盤上的臨時文件中,然后可以執行node.js傳遞它是Javascript源文件。 這是打包步驟,而不是二進制編譯步驟。 現在,EXE中的軟件包可能已被二進制壓縮,但是當代碼傳遞到node.exe時,它仍然是純文本Javascript,仍然可以由堅定的黑客看到。

您的問題無法通過這種方式得到適當緩解。 不管您要使一個不好的演員跳過多少次跳轉,無論它多么不透明,它仍然都位於一台服務器上。

查看解決方案,其中解密要求密鑰永遠不會保存到該計算機的磁盤上,而是在每次啟動您的應用程序(或更好的是,整個服務器)時都安全地對其進行檢索,例如硬盤加密程序,該程序必須在主操作系統能夠成功之前完成均勻負載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM