我明白朮語沙箱。但是我在JS中的有限技能無法幫助我理解JS中的沙盒。那麼,沙盒究竟是什麼?除了安全性,爲什麼我們需要沙箱JS?JavaScript中的沙箱實際上是什麼?
回答
javascript sandbox的確如你所說。它限制了腳本的作用範圍。虛擬化腳本可以調用的資源也有好處。這使得沙盒主機可以對這些資源進行編組以獲得更好的性能,並說,停止無休止地循環腳本,從而導致整個瀏覽器崩潰。
沙盒是創建應用程序的其他部分無法操作的範圍的行爲(除非有機會)。更具體地說,這通常是一個函數範圍,它暴露了其中實際發生的有限子集。
一個基於沙箱思想的圖書館是YUI3。應用程序的基本單位是YUI實例沙箱:
var Y = YUI(); // creates a configurable YUI instance
// Creates a sandbox for one part of your application,
// including the 'node' module.
Y.use('node', function(Z) {
// Z is a YUI instance that's specific to this sandbox.
// Operations inside it are protected from outside code
// unless exposed explicitly. Any modules you request in
// use statement will be separately instanced just for
// this sandbox (in this case, the 'node' module)
//
// That way, if another part of your application decides
// to delete Z.Node (or worse, replace it with a
// malicious proxy of Z.Node) the code you've written
// here won't be affected.
});
沙箱的優點主要是爲了減少應用程序的複雜性:因爲沙箱是不可變的,所以他們可以很容易推理和驗證。它們還可以提高運行時安全性,因爲精心設計的沙箱應該能夠作爲頁面上運行的其他腳本的黑盒子運行。它並不能防止所有可能的攻擊,但它可以防止許多簡單的攻擊。
我的寬帶不喜歡這個問題&我被阻止:(謝謝你的詳細信息,在jQuery中查看你的例子我可以這樣做$(function(){/ *這裏有一些代碼* /});''和你說的一樣嗎? – Kumar
不是很接近但最接近的區別是,如果我有一個YUI實例,我使用模塊'A'和'B', 'B'恰好修改了模塊'A'(添加了額外的屬性或者改變了它的行爲),之後我可以創建一個新的YUI實例,它只是使用模塊'A'來獲取未修改的版本。 jQuery(據我所知,無論如何)。 –
沙盒爲腳本創建的使用範圍有限。假設你正在爲一個網站編碼,那麼當你不確定它們是否能按照你的預期工作時,t值得使用沙盒,以避免對現場網站進行編輯 - 而且沒有測試就不可能真正確定。即使它工作正常,如果您有機會對JS進行一系列更改,直到您按照自己喜歡的方式進行了調整,則可以輕鬆地中斷試圖在更新網站時嘗試使用該網站的任何人。
由於沙盒的本質有限,因此在破解事物時也可以更容易地分辨出什麼是破碎的。
- 1. 什麼是extjs沙箱?
- 2. 什麼是android中的進程,線程,沙箱和DalvikVM實例?
- 3. 什麼是動態沙箱內聯JavaScript的最佳方法?
- 4. Java中實際是什麼?
- 5. Zendesk Javascript可在沙箱中使用,但不能在實際中使用Zendesk
- 6. 上Hortonworks沙箱
- 7. 什麼是:attribute =>參數實際上是做什麼的?
- 8. Javascript沙箱模式示例實現
- 9. 'flex-order'實際上是什麼意思?
- 10. 什麼是set_locale(LC_CTYPE,'C');實際上呢?
- 11. 實際上php session_id是什麼?
- 12. QFE_Richmond實際上是什麼意思?
- 13. 實際上tensorflow會話是什麼?
- 14. mb_internal_encoding()實際上是什麼意思?
- 15. 「框架」實際上是什麼意思?
- 16. 什麼是Scala註釋實際上?
- 17. InetAddress.isSiteLocalAddress()實際上是什麼意思?
- 18. PayPal延遲IPN(在沙箱中,並與實際支付)
- 19. 什麼是SharePoint Server 2010中的沙箱解決方案?
- 20. 沙箱的JavaScript模塊
- 21. Python中的實際assertEquals是什麼?
- 22. 什麼是Scala中的「(x,y)」,實際返回的是什麼?
- 23. gis俚語中實際上是「EXTENT」的是什麼?
- 24. 在沙盒上的沙箱配置
- 25. 爲什麼「@grant randominvalidsetting」激活沙箱?
- 26. Angularjs沙箱逃逸有什麼含義?
- 27. 在known_hosts中實際是什麼?
- 28. RDBMS中,什麼是替代實際CRUD
- 29. 沙箱社交分享JavaScript
- 30. Symfony緩存是什麼:clear實際上做了什麼?
什麼環境?瀏覽器? –
爲什麼除安全性之外還有其他原因?重點是不允許網絡上的任何代碼影響瀏覽器以外的任何內容。 – geoffspear
@Wooble查看下面的答案:除了安全性還有一些額外的好處。我可能會補充說,這是一個很好的設計,因爲JavaScript對於全球性的東西太糟糕了。 –