Javascript 小部件安全性

Javascript 小部件安全性,javascript,widget,code-access-security,Javascript,Widget,Code Access Security,我正在开发一个javascript小部件,允许用户注册列表。此小部件将可嵌入客户网站。因为它都是客户端驱动的,不包括返回服务器的请求。我一直在想办法使小部件“安全”,本质上是限制小部件只能在批准的网站上加载 谷歌地图似乎能够使用他们提供给你的密钥来查找加载地图的站点。达到这种效果的东西将是完美的 小部件设计:Javascript将HTML插入DOM。还添加了一个iframe元素。iframe从我的站点加载表单以处理请求。向iframe URL传递一个键以加载表单设置 不是真的在寻找代码,伪代码是

我正在开发一个javascript小部件,允许用户注册列表。此小部件将可嵌入客户网站。因为它都是客户端驱动的,不包括返回服务器的请求。我一直在想办法使小部件“安全”,本质上是限制小部件只能在批准的网站上加载

谷歌地图似乎能够使用他们提供给你的密钥来查找加载地图的站点。达到这种效果的东西将是完美的

小部件设计:Javascript将HTML插入DOM。还添加了一个iframe元素。iframe从我的站点加载表单以处理请求。向iframe URL传递一个键以加载表单设置


不是真的在寻找代码,伪代码是完美的,只是在技术上迷失了方向

您的web服务器将通过GET请求为小部件提供服务,并期望传递一个
key=xyz
参数。服务器将在返回小部件响应之前检查密钥是否有效

问题是客户需要从其客户机上的JavaScript发送密钥。因此,您客户的所有客户都知道客户的密钥。这意味着期望您的客户对其密钥保密是不合理的

我相信这是什么,它将每个密钥与一个域相关联。如果您将小部件嵌入iframe中,那么您应该能够检查标题,以检查此请求是否确实来自客户的网站,而不是其他窃取客户密钥的网站


这看起来相当安全(任何其他网站都不可能在不支付密钥的情况下托管您的小部件)。剩下的唯一问题是:钥匙到底有什么用?为什么不使用Referer来验证允许访问widget的站点,而不让它们经历提供密钥的麻烦呢。我似乎想不出需要它的理由。也许有人可以在评论中想到这一点。

从主机的详细信息生成密钥,并自动提供/生成密钥,作为他们添加到其站点的代码的一部分,当您希望人们通过自动接口等请求和使用小部件时,这是很好的。这样,您就不必太关心谁在使用小部件,但是而是通过正确的步骤来使用它。因此,您可以首先捕获有关主机的其他信息?Referer不能用作安全功能,它是可选的标头,每个客户端都可以篡改itRight,客户端可以篡改Referer标头,但网页无法将浏览器发送的Referer标头更改为嵌入式iframe。因为问题是防止其他站点未经允许嵌入该小部件,所以检查Referer应该是安全的。