3
我一直在評論我可以找到關於在JavaScript網頁的客戶端使用eval()的安全含義的線程。客戶端用於運行不可信代碼的JavaScript eval()
我正在實現一個網站,該網站應該允許用戶運行他們自己的代碼(寫在頁面上)並在同一頁上的另一個div上看到一些可視結果。基本上,我希望用戶能夠編寫有效的JavaScript代碼,並讓它在同一頁面上操作畫布。
沒有必要對代碼進行服務器端評估。
我曾看過Jailed和Caja,但我認爲他們可能會增加不需要的額外複雜度。
我明白,做這類事情的權方式是在有我的代碼庫的其他部分沒有訪問權限的「沙箱」,然而,我的需求是這樣的,我不能真正定義一個簡單的API提供安全的入口/出口點...我希望用戶能夠使用任何JavaScript代碼,我不想寫一個將提供API的解釋器。
由於不需要服務器端評估,並且應該只有一個用戶在Web會話中執行自己的代碼,使用eval()是否安全?
除非該代碼與其他用戶共享,這可能導致cookie被竊取或其他一些不良行爲,我認爲它可能是安全的,或者至少它可能會損害用戶會話 – alex88
您的eval方法與jsfiddle.net一樣安全,但在跨瀏覽器方式中捕獲拋出的錯誤(js的異常版本)時會遇到問題,並顯示導致錯誤的行。不是爲了安全性,但是對於捕獲的錯誤問題,您可能需要考慮創建腳本標記或iframe並在其中執行代碼,但是......這不是您所問的:p – hanshenrik