簡體   English   中英

關閉對全局變量的訪問javascript

[英]Closing access to global variables javascript

我正在編寫一個js API,供外部客戶使用,並由我的客戶在其Web瀏覽器中執行。

由於這可能會對我的Web用戶造成危害(安全漏洞等),因此我想允許或禁止訪問至少document全局變量和XMLHTTPRequest API等其他變量。

我怎樣才能做到這一點?

編輯:我正在考慮對API用戶編寫的函數進行包裝時,將document = null用作類似的操作,但是它不起作用。 同樣,使用這種方法很難做到徹底,因為有太多的解決方法,太多的可能性無法考慮到所有這些。

答案很簡單:您不能。

這可能不是想要的答案,但是這些全局變量無法修改。

自己嘗試:

window = 1;
console.log(window) // Window {top: Window, window: Window, ...

document = false;
console.log(document) // #document (as in the document object)
document = null;
console.log(document) // #document (same)

window.document = false;
console.log(window.document) // #document

但是,這對於XMLHttpRequest似乎確實可行:

XMLHttpRequest = null
console.log(XMLHttpRequest)        // null
console.log(window.XMLHttpRequest) // null

因此,您可能可以禁用單個功能。

但是,將這樣的本機功能弄亂是一個主意,因為它可能會產生意想不到的副作用。 例如,jQuery將XMLHttpRequest用於其ajax函數。

卡哈

Caja編譯器是一種使第三方HTML,CSS和JavaScript安全地嵌入您的網站的工具。 它使嵌入頁面和嵌入式應用程序之間可以進行豐富的交互。 Caja使用對象能力安全模型來實現各種靈活的安全策略,以便您的網站可以有效地控制嵌入式第三方代碼對用戶數據的作用。


ADSafe

JavaScript(Web瀏覽器的編程語言)不是安全的語言。 頁面中的任何腳本都可以直接訪問頁面的所有信息和關系。 這使得混搭和腳本廣告的使用風險不可接受。

使用ADsafe可以安全地將訪客代碼(例如第三方腳本廣告或窗口小部件)放置在網頁上。 ADsafe定義了JavaScript的子集,該子集的功能足以允許來賓代碼執行有價值的交互,同時防止惡意或意外損壞或入侵。 可以通過諸如JSLint之類的工具對ADsafe子集進行機械驗證,因此無需人工檢查即可查看來賓代碼的安全性。 ADsafe子集還執行良好的編碼習慣,從而增加了來賓代碼正確運行的可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM