例如CodePen和Khan Academy 編程專案。他們讓他們的用戶上傳將在其他計算機上運行的 js 腳本,codepen 甚至允許擁有專業帳戶的用戶使用 3rd 庫。我想在我的網站上做同樣的事情,這有多危險?如何將風險降到最低?
uj5u.com熱心網友回復:
如果您實施適當的沙盒,它相對來說是相當安全的。
您要避免的一件事是讓用戶代碼在其他用戶瀏覽器的頂層運行,因為如果您允許,其他用戶在網站上的所有資料都可能被檢索、記錄和竊取,等等。但是,如果您確保用戶代碼不是在頂層運行,而是在沙盒 iframe(不能讓頂層視窗運行任何東西)內運行,它可能會很好。
有關該問題的類似討論,請參閱 Meta Stack Overflow 上的此問題。您提到的網站,以及其他從用戶(如 Stack Overflow 和 JSFiddle 等)實作實時代碼編輯器的網站都使用這種在沙盒 iframe 中運行用戶代碼的技術,因此運行的代碼無法到達頂層視窗,其資料必須妥善保管。iframe 還應該使用與父站點不同的來源(如果有的話)——現代瀏覽器自然地出于這種原因對跨站點通信實施了非常嚴格的限制(因此來自一個來源的 iframe 對另一個來源的父視窗,除非父視窗是專門設定這樣的東西)。
我說沙盒 iframe相當安全,但不是絕對安全,因為像 Spectre 這樣的東西最終可能會在前端 JavaScript 中被利用來做一些真正有效的惡意操作,這并非不可能。我認為它還沒有在野外出現過,而且可能永遠不會出現,但這并非不可能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/484097.html
標籤:javascript 安全
上一篇:在python腳本中切換環境
