javascript中的沙箱並非傳統意義上的沙箱,只是一種文法上的hack寫法而已,javascript中處理模組依賴關係的閉包被稱之為沙箱,和 ajax一樣,這種sandbox coding風格是一種現象,而不是本質,本身並無對錯之分,要看你怎麼用,因此,理解併合理運用才是我們對“js沙箱”的一個正確的基本態度,“沙箱無用論”是很業餘的觀點。
——沙箱是一個工具。就和鍵盤和滑鼠一樣,我們需要他,但更要看我們怎麼用他。
目前來看,js沙箱的優勢在於代碼的組織並向“應用”提供架構支援,js沙箱解決不了全域變數汙染,多版本庫的融合等基本問題,很多人對js沙箱抱有太高奢望,也是不對的。
—— 沙箱是一把利器。就像AK是巷戰之王,可還是有人硬要拿它打飛機。
js沙箱已經開始影響B端開發,而且在前後端融合方面具有更多前瞻性的優勢。
——沙箱是一把鑰匙。ajax的流行改變了B端開發模式,我們有理由期待js沙箱在企業級開發中的表現。
當JavaScript第一次發布的時候,有一個可以理解的憂慮,那就是開啟一個頁面可能會直接在機器上執行一段代碼。如果JavaScript中含有一些有害的代碼,比如刪除所有Word文檔,或者更糟的是,向指令碼的編寫者複製這些Word文檔,那該怎麼辦呢?
為了防止這種情況發生,同時也為了讓瀏覽器的使用者放心,JavaScript構建為只在沙箱中運行。沙箱是一個受保護的環境,在這個環境中,指令碼不能訪問瀏覽器所在的電腦資源。
另外,瀏覽器所實現的安全條件高出並超過了JavaScript語言所建立的最低條件。這些都定義在一個與瀏覽器相關的安全性原則中,它決定了指令碼能做什麼不能做什麼。例如,一個這樣的安全性原則規定指令碼不能與指令碼所來源的域以外的頁面通訊。大多數瀏覽器還提供了定製這一策略的方式,這可以使指令碼所啟動並執行環境限制變得更嚴或更松。
不幸的是,即便是有了JavaScript沙箱和瀏覽器安全性原則,JavaScript還是經過了一段難熬的時光,駭客已經發現並充分利用了JavaScript的一些錯誤,有些錯誤與瀏覽器無關,有些錯誤與瀏覽器有關。較嚴重的一個是跨站指令碼(cross-site scripting,XSS)。這實際上是一類安全破壞(其中一些通過JavaScript,另一些通過瀏覽器的漏洞,還有一些通過伺服器),它能夠導致 cookie dao qie、暴露用戶端或網站的資料,或導致許多其他的嚴重問題。
從語言學的角度上來說,允許代碼無節制地使用全域變數,是最錯誤的選擇之一。而更可怕的,就是一個變數"可能"成為全域的(在未知的時間與地點)。但是這兩項,卻伴隨JavaScript這門語言成功地走到了現在。
相關廠商內容