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這門語言成功地走到了如今。javascript