1

我有一個firefox插件,用於通過在頁面中注入一些javascript(通過在head元素下創建一個元素,並將其innerHTML值設置爲要執行的javascript)來與github的web應用程序進行交互。當從Firefox插件的頁面注入js時,是否有可能繞過CSP?

但是,它剛剛停止工作。然後我看到了以下警告:

Timestamp: 8/21/13 5:45:42 PM 
Warning: CSP WARN: Directive inline script base restriction violated 
Source File: https://github.com/login 
Line: 0 
Source Code: 
myjscode();... 

Github上返回以下標題:

X-Content-Security-Policy: default-src *; script-src 'self' https://github.global.ssl.fastly.net https://jobs.github.com https://ssl.google-analytics.com https://collector.githubapp.com https://analytics.githubapp.com; style-src 'self' 'unsafe-inline' https://github.global.ssl.fastly.net; object-src 'self' https://github.global.ssl.fastly.net 

我意識到火狐開始通過X-內容安全,策略頭支持CSP,但我想一些機制可以防止代碼插入到制動器。

有誰知道擴展API是否有任何特定的機制在頁面中注入javascript並繞過CSP設置?理由是 - 如果用戶安裝了插件,他/她信任它,並且應該有一種方法可以繞過CSP。

+0

可能不是您正在尋找的答案,但您不應該首先將腳本注入網站。還有其他很多可用的選項,例如框架腳本(消息管理器),SDK頁面模式,自定義沙箱或甚至是內聯框架。或者不要在頁面上下文中首先運行代碼,而是在瀏覽器中運行代碼。 – nmaier

+0

嗨nmair。感謝您的評論。你能更具體一些,並詳細說明這些選擇嗎?例如,在Chrome中,我使用chrome.tabs.executeScript,這很好。有什麼這樣的Firefox?謝謝 – FullOfCaffeine

+0

我已經給了一個列表。我不能更具體地指出哪些最適合你的附加組件,而不知道你正在嘗試做什麼。 「我想在點擊上做點什麼」和「我需要加載jQuery以及一些花哨的東西」之間有區別。 – nmaier

回答

0

這是一個與某些表單元素交互的腳本,例如填充文本輸入和單擊按鈕。非常簡單的東西。

我會考慮任何SDK page-mod,或非SDK插件只聽load events和使用常規的DOM API做你的操作在事件處理程序。

與page-mod一起使用SDK很可能是類似於chrome.tabs.executeScript和chrome擴展的最接近的東西,所以我願意這樣做。

0

你可以在Firefox中做到這一點,雖然不建議。 打開頁面,關於:config 並設置security.csp.enablefalse(可能需要重新啓動)。

相關問題