2011-07-03 33 views
2

我希望能夠將腳本注入到由我自己的服務器提供的頁面內的一個iframed頁面(託管在第三方服務器上)(以可視化wysiwyg應用程序的更改) 。保護第三方iframe上的腳本注入和執行

由於我在'target'頁面上有一個小的stub腳本,我可以猜想只是有一個方法允許任何腳本執行任何傳遞給它的東西。顯然這聽起來並不安全,因爲它會爲一些整齊的XSS打開一個攻擊向量。我爲保護它的想法之一是將某種令牌與我想要運行的腳本一起傳遞,其中存根客戶端代碼將與服務器進行檢查,然後才執行腳本。這有意義嗎?任何人都可以向我指出任何先例嗎?

非常感謝

+0

有沒有其他方法可以解決這個問題? iframe解決方案聽起來......有風險。 –

+0

它做了一些 - 但因爲我需要在現場展示更改,我能想到的唯一的其他解決方案是通過我的服務器代理頁面。這不會很酷(url重寫,bw等的加載) – malangi

+0

你打算如何在「目標」頁面中找到這個建議的腳本?瀏覽器不會讓你觸及它。 – Pointy

回答

2

首先,這聽起來像你控制實際的iFrame少量的代碼。爲什麼不把你想要的實際「安全」代碼放在iframe中,然後只是通知一個人,而不是你允許其他人通過這個存根插入一個腳本的提議(這會讓你面對各種各樣的攻擊)父框架的結果?

其次,有一個關於安全的跨域iframe通信的數十萬個網頁。由於我仍然不確定自己想要做什麼,因此您可能需要自己完成搜索並找到最適合您的機制。谷歌搜索「安全跨域iframe通信」可以發現大量信息。第三,我遇到並喜歡最好的文章是Cross Domain Communication with iFrames,最安全的技術看起來像postMessage,因爲它只共享數據,不允許調用代碼,並且實際上可以檢查它所信任的來源,儘管postMessage只是在較新的瀏覽器中可用,因此您必須回到其他在舊版瀏覽器中工作的其他技術。這裏有一個jQuery plugin,它在可用時使用postMessage,如果不可用則回退到另一種技術。

如果這些信息不夠詳細,請告訴我們更多關於您在iFrame中想要做什麼或者您想在兩個來源之間傳遞什麼信息?

+0

考慮到這個問題,我認爲這是接近於可行的答案。 –

+0

非常好,非常感謝 - 互聯網上有負載,但想確保我沒有錯過顯而易見的東西:)。事實證明,在某種程度上我是,我需要的只是一個觸發器(現在我考慮它)而不是任意代碼執行:)。歡呼的鏈接,這些將派上用場! – malangi