[英]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使用對象能力安全模型來實現各種靈活的安全策略,以便您的網站可以有效地控制嵌入式第三方代碼對用戶數據的作用。
JavaScript(Web瀏覽器的編程語言)不是安全的語言。 頁面中的任何腳本都可以直接訪問頁面的所有信息和關系。 這使得混搭和腳本廣告的使用風險不可接受。
使用ADsafe可以安全地將訪客代碼(例如第三方腳本廣告或窗口小部件)放置在網頁上。 ADsafe定義了JavaScript的子集,該子集的功能足以允許來賓代碼執行有價值的交互,同時防止惡意或意外損壞或入侵。 可以通過諸如JSLint之類的工具對ADsafe子集進行機械驗證,因此無需人工檢查即可查看來賓代碼的安全性。 ADsafe子集還執行良好的編碼習慣,從而增加了來賓代碼正確運行的可能性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.