小部件安全性

Set*_*eth 5 javascript widget code-access-security

我正在开发一个javascript小部件,允许用户注册列表.此小部件可嵌入客户网站.因为它是所有客户端驱动的,减去返回服务器的请求.我一直试图想出一些方法来使小部件"安全",基本上是一种限制仅在批准的站点上加载小部件的方法.

谷歌地图似乎能够使用他们提供给您的密钥来查看加载地图的网站.这样的效果会很完美.

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

不是真正寻找代码,伪代码是完美的,只是丢失了技术.

mgi*_*uca 0

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

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

我相信谷歌地图所做的是将每个键与一个域相关联。如果您将小部件嵌入 iframe 中,您应该能够检查Referer标头,以检查该请求是否确实来自客户的网站,而不是盗取客户密钥的其他网站。

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

  • 是的,客户端可以篡改Referer header,但是网页不可能更改浏览器发送到嵌入iframe的Referer header。由于问题是关于防止其他_站点_未经许可嵌入小部件,因此检查引用者应该是安全的。 (2认同)