小部件安全性

时间:2011-03-24 23:50:29

标签: javascript widget code-access-security

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

Google地图似乎可以使用他们提供给您的密钥来查看加载地图的网站。这样的效果会很完美。

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

不是真的在寻找代码,伪代码是完美的,只是在技术上丢失了。

1 个答案:

答案 0 :(得分:0)

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

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

我相信Google Maps does将每个密钥与域相关联。如果您将窗口小部件嵌入到iframe中,您应该能够检查Referer标头,以确定此请求确实来自客户的网站,而不是其他一些扯掉客户密钥的网站。

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