我正在開發一個腳本擴展,類似於Greasemonkey或Chrome的內容腳本引擎。這個擴展將允許腳本編寫者做非常危險的事情,比如訪問本地文件。javascript(或瀏覽器擴展)如何檢測受限功能的使用?
如果我向公衆發佈此擴展,我希望它能夠警告新手用戶,如果腳本將使用「危險」功能。我希望這個警告儘可能難以規避。
例如,擴展可以搜索字符串保護和GM_openSQL_Connection
提醒用戶 - 也許是這樣的:
假設基本網頁將永遠無法訪問GM_openSQL_Connection
感謝沙盒機制。同樣,沒有<script>
節點將能夠。
但是,劇本作家仍然可以規避簡單的搜索,從上面的東西,如:
eval (decodeURI ("GM_op%65nSQL_Connection (...);"))
所以,問題是什麼是種方式,其中一個邪惡的編劇可以欺騙檢查受限功能使用情況,以及如何防止這種惡作劇?
注意:錯誤的警告可以沒問題。例如,如果腳本作者在其他靜態字符串中使用文本「GM_openSQL_Connection」,那麼他將不得不忍受(錯誤)警告。
完全無關,但我喜歡你的例子警告。 :) – fayerth 2012-03-06 07:26:07
你不能說危險只會導致函數的名字。只能採取行動,而不能將名字列入黑名單。它使用的cookies和遠程訪問,以3-第三方主機直接接入功能最常認定爲危險的(並不意味着他們,但是這可能是他們是一個警告)。其他一些模式也可能被解釋爲不受歡迎。 – YuS 2012-03-06 07:37:47
我會建議使用同樣的方法爲[JavaScript的Deobfuscator(https://addons.mozilla.org/addon/javascript-deobfuscator/)(使用調試接口來獲取所有的函數調用,不管他們是如何編譯),但這將無濟於事。考慮var foo = window [「GM_op」+「enSQL_Connection」]; foo(...)'。您不能按函數名稱前進,因爲函數名稱可能會更改太容易。 – 2012-03-06 07:42:26