2011-07-04 65 views
-1

我知道這個主題已被討論過,並且由於安全原因,沒有辦法讓父框架修改子框架。 但是 我正在爲一些客戶開發一個ad-hoc解決方案,我們可以在那裏配置瀏覽器並最終安裝插件(這將是「失敗」的解決方案)。 我們想配置瀏覽器(鉻或其他),以保護瀏覽器不受此影響。 我的目標是注入一個JavaScript到那裏沒有任何訪問網站的網站。解決方法不安全的JavaScript嘗試訪問框架和ad-hoc解決方案

我實際上使用一個php代理工作...非常糟糕(如何保持鏈接,當他們通過JavaScript動態加載?),我不想開發一個Firefox插件,因爲它稍重和更長設置我猜。

有什麼想法?

+0

我不知道我已經很清楚。 我不想破解網站,只是在我們客戶的「低安全性瀏覽器」上,他們將能夠看到網站加上我們的.js,它將修改網站。 – florent

回答

0

你的問題不太清楚。但是如果你想在iframe中加載一個不同於parent的域名,就沒有辦法訪問它,除非你的客戶使用的是開放源碼的瀏覽器,並且很高興你能在他們的系統上安裝黑客版本的瀏覽器將允許這一點。

但我可以向你保證,這是不會發生的各種原因。

tl; dr:你不能。

+0

以及我們也可以做到這一點。這是一個非常具體的應用程序,需要我們的客戶購買平板電腦才能使用它。我們可以安裝黑客入侵的網頁瀏覽器。我實際上在尋找最簡單的解決方案。 對於我們來說,安裝和開發並允許我們通過客戶端網站的JavaScript部分進行修改,而無需訪問ftp。 – florent

0

對於最近的瀏覽器,您可以使用window.postMessage在2個不同域之間進行通信。

如果您必須支持IE6/IE7或更舊的瀏覽器,則可以使用window.name黑客。

這兩種技術都允許您在幀之間傳遞字符串數據。 然後,您需要在聽取事件並進行操作的兩側都有一些javascript。您無需對瀏覽器配置進行任何更改。

編輯:

您的評論後,這裏是另一種選擇:一個bookmarklet。您在網站上這樣定義一個頁面,改變路徑js文件:

<html> 
<body> 
<a href="javascript:(function(){var s=document.createElement('SCRIPT');s.src='/url/to/your.js?'+(Math.random());document.getElementsByTagName('head')[0].appendChild(s);})()">Drag'n Drop this to your bookmarks</a> 
</body> 
</html> 

你問你的用戶點擊書籤時,他們希望自己的代碼運行。
這會將代碼注入客戶端頁面,並且您可以自由地做你想做的事情。

顯然這有安全問題。您的腳本在其頁面中擁有完全訪問權限(內容,Cookie)。但是因爲你幾乎已經準備好重新編譯一個網頁瀏覽器:)我想它會對他們有效。

+0

我不需要支持舊瀏覽器。 如果我很好理解,幀可以相互溝通? 例如,幀A發送消息給幀B但幀B具有監聽postMessage事件的javascript。我的客戶網站無法修改以聽取任何內容。 在我的情況下,我想框架A(我)修改框架B(客戶端),但我不能控制框架B中的東西。瀏覽器不允許這樣做(將是一個弱點)。我們的機會是我們可以修改客戶端瀏覽器的設置(它不是一個大規模的應用程序)。 thx爲您的時間和耐心! – florent

+0

我不知道我明白了。 它如何在Iframe中注入代碼?這個例子會將腳本注入主框架的頭部嗎? – florent

+0

用戶必須將鏈接拖放到他們的書籤欄(如果這是他們可以接受的)。然後他們進入客戶頁面。點擊書籤,此時您的js腳本將從您的網站加載到他們的頁面中。然後,您可以添加一個iframe,更改內容,...任何你想要的。但是你需要他們的手動操作(和同意)來注入你的外部腳本。 – Mic