2012-02-22 35 views
2

我有一個值得信賴的合作伙伴,我想讓他調用我的Iframe並添加一個JS/css文件路徑作爲參數,我會這樣調用它:調用外部JS和CSS到我的網站 - 有什麼風險

<script type="text/javascript" src="@(HttpUtility.UrlDecode(HttpContext.Current.Request.Params["CustomJs"]))" ></script> 
<link type="text/css" media="screen" href="@(HttpUtility.UrlDecode(HttpContext.Current.Request.Params["CustomCss"]))" rel="stylesheet" /> 

這是爲了讓他鉤住設計並註冊一些JS鉤子。 合作伙伴是值得信任的,並將在文檔上簽名,表明JS/css的使用僅適用於將從我們這邊調用的允許功能。

問題是,我是否將我的客戶暴露於任何形式的危險情況下(假設合作伙伴都可以)。
它全部根據ssl
什麼是安全風險。

感謝

+0

您發佈的代碼是在框架中加載的文檔,對嗎? – Gumbo 2012-02-22 10:24:01

+0

@Gumbo,是的,它是 – SexyMF 2012-02-22 10:30:14

回答

1

由於CSS和JavaScript嵌入在一個框架文件,而不是直接到您的文檔時,CSS僅適用於框架的文件。

框架的JavaScript是否可以訪問您的文檔的DOM有點複雜。因爲這裏應用了Same Origin Policy。但除非您和您的合作伙伴共享相同的出處,否則您的合作伙伴的JavaScript無法訪問您文檔的DOM,並從中讀取數據或進行更改。

2

風險在於,如果您的合作伙伴的安全受到威脅,您的系統也將變得不安全。假設,如果攻擊者以某種方式將惡意代碼添加到您的合作伙伴的腳本中,代碼可能會傳遞到您的系統。這與跨站點腳本攻擊http://en.wikipedia.org/wiki/Cross-site_scripting高度相關。

爲了規避這種風險,我建議爲這些JS/CSS文件實施一個適度的代理。例如,ASP.NET Handler(.ashx)會調用合作伙伴的網站以獲取原始腳本並將它們存儲在內部(可能位於數據庫中),而所討論的框架則通過處理程序的使用來獲取腳本和CSS。喜歡的東西:

<script ... src="ModeratedProxy.ashx?partner=abcd&file=efg.js"></script> 

處理程序會通知網站的所有者如果合作伙伴更改了腳本,甚至可以允許任何外部文件的預審覈。

+1

所以你已經確定了原始海報(OP)的一個非常真實的風險。怎樣才能完成自己的目標?符合相同原產地政策的方法?在原始主機上創建一個排序代理頁面,這樣可信賴的合作伙伴可以通過主機洗牌js/css數據? – EBarr 2012-05-22 14:17:57

+0

@EBarr,感謝您的討論。爲了規避這種風險,我建議爲這些JS/CSS文件實施一個適度的代理。例如,一個ASP.NET Handler(.ashx)可以調用合作伙伴的網站獲取原始腳本,並將它們存儲在內部(可能位於數據庫中),而所討論的框架通過使用處理程序(' ')。如果合作伙伴更改腳本,處理程序會通知網站所有者,甚至可能允許預先審覈任何外部文件。 – 2012-05-31 07:14:09