如何防止在不同域中加载脚本

时间:2010-11-18 15:18:12

标签: c# javascript asp.net

我有<script src="bla"></script>可以加载到多个域中。 我想知道是否有办法控制它将被加载的域。 澄清一下:我的脚本是服务器端呈现的,所以基本上如果请求的域无效,我可以返回空字符串。

这是为了防止其他网站嵌入我的脚本。

谢谢!

3 个答案:

答案 0 :(得分:2)

您可以检查推荐人,但这是由用户的网络浏览器设置的,并非100%可靠。

我认为没有办法100%检测哪个域嵌入了脚本。

答案 1 :(得分:0)

您是否只能检查请求所在的域名?

参见http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.host.aspx,您可以通过HttpContext.Current.Request获取它。

一个例子:

if (HttpContext.Current.Request.Host.Containts("fred.com")) {
   return; // Or you could do a Response.Write and Flush
}

您还可以将脚本代码嵌入到闭包中,只需在开头查看并返回:

(function() {

  if (location.hostname == "....") return;

  ...more code here...

})();

答案 2 :(得分:0)

您可以使用相同的机制来防止热链接图像 - apache上的mod_rewrite,或iis上的isapi过滤器,例如

如果请求来自其他域,则删除该请求,或发送一个绝对脚本。