如果我在React檔案中匯入一個(gè)物件以使用其中的一些值,會導(dǎo)致安全性問題嗎?
例如,如果我有一個(gè)像這樣的物件:
var data = { 'name': 'Adam', 'id': 12345, 'secret': 98765 }
並且我像這樣導(dǎo)入它:
import { data } from 'db.js'; function Index(){ return( <> {data.name} {data.id} </> ); }
我會建立一個(gè)場景,使得某人可以使用匯入的「data」物件呼叫並查看「secret」值,還是React會阻止這種情況發(fā)生?
您應(yīng)該將發(fā)送到客戶端機(jī)器的任何程式碼視為公開的。任何足夠?qū)W⒌拈_發(fā)人員最終都可以進(jìn)行逆向工程(儘管程式碼的大小和縮小/混淆可能會增加難度)。
保持secret
秘密的唯一方法是先不傳送到客戶端 - 這可以透過在伺服器上完成所有渲染工作,然後將產(chǎn)生的HTML標(biāo)記傳送到客戶端來實(shí)現(xiàn)。 (話雖如此,由於客戶端渲染元件的靈活性更大,通常最好的做法是在客戶端的捆綁包中不包含敏感值。)