调用外部JS和CSS到我的网站 - 风险是什么

时间:2012-02-22 09:30:29

标签: c# javascript security

我有可靠的合作伙伴,我想让他调用我的Iframe并添加一个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
什么是安全风险。

由于

2 个答案:

答案 0 :(得分:2)

风险在于,如果您的合作伙伴的安全性受到损害,您的系统也将变得不安全。假设,如果攻击者以某种方式将恶意代码添加到您的伙伴的脚本中,则代码可能会传递给您的系统。这与跨站点脚本攻击http://en.wikipedia.org/wiki/Cross-site_scripting高度相关。

为了规避这种风险,我建议为这些JS / CSS文件实施一个主持代理。例如,一个ASP.NET处理程序(.ashx)将调用合作伙伴的站点以获取原始脚本并将它们存储在内部(可能在数据库中),而有问题的帧通过使用处理程序来获取脚本和CSS。类似的东西:

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

如果合作伙伴更改脚本,处理程序将通知网站所有者,甚至可以允许预先审核任何外部文件。

答案 1 :(得分:1)

由于CSS和JavaScript在框架中嵌入到文档中而不是直接嵌入到文档中,因此CSS仅应用于框架的文档。

框架的JavaScript是否可以访问文档的DOM有点复杂。因为这里应用了Same Origin Policy。但除非您和您的合作伙伴共享相同的来源,否则您的合作伙伴的JavaScript无法访问您的文档的DOM并从中读取数据或更改它。