如何保护我的ajax小部件?

如何保护我的ajax小部件?,ajax,widget,sign,Ajax,Widget,Sign,我想围绕我在服务器上托管的ajax API创建一个小部件。这个小部件也将由我的服务器提供服务,并放置在第三方网站上。小部件必须能够访问宿主页面的DOM(因为它访问页面上的表单数据),因此必须使用脚本标记而不是iframe将其嵌入 当按下按钮时,小部件将点击MyAPI,接收响应,并将其插入宿主页面的表单中 到目前为止,使用脚本标记和ajax很好。在几分钟内进行了快速的概念验证。但是我怎样才能阻止第四方查看第三方页面上的代码并复制它,以便在他们的页面上也有小部件呢?该小部件将免费提供给每个人,但我想

我想围绕我在服务器上托管的ajax API创建一个小部件。这个小部件也将由我的服务器提供服务,并放置在第三方网站上。小部件必须能够访问宿主页面的DOM(因为它访问页面上的表单数据),因此必须使用脚本标记而不是iframe将其嵌入

当按下按钮时,小部件将点击MyAPI,接收响应,并将其插入宿主页面的表单中

到目前为止,使用脚本标记和ajax很好。在几分钟内进行了快速的概念验证。但是我怎样才能阻止第四方查看第三方页面上的代码并复制它,以便在他们的页面上也有小部件呢?该小部件将免费提供给每个人,但我想知道谁在使用它和控制访问。我还想阻止人们在没有小部件的情况下访问API

我头脑风暴了大量的签名和散列想法、过期代币、第三方服务器端代理、在客户端使用Flash等等,但我想不出一个坚定的恶搞者不容易找到的东西

换句话说,我想确保只有呈现小部件的客户端才能调用API并获得响应


也许有其他的方法来思考这个问题?

对于任何感兴趣的人,我提出了一个解决方案:

我要求我的小部件只显示在需要登录到第三方网站的页面上。i、 e.不在公开可用的页面上

我还将要求第三方网站嵌入几行服务器端代码(如PHP),生成随机nonce,并将其与密钥组合,创建散列:

$nonce=make_nonce(); $secret='特定于此提供程序的密钥'; $hash=sha1($nonce.$secret)

nonce和hash将与请求一起发送到我的服务器,以便我可以验证它们是否来自正确登录到第三方系统的浏览器。我将向浏览器返回一个API访问令牌,该令牌可用于对API的点击

这将API访问与特定的第三方集成商联系起来

然后为了限制滥用,我将对访问令牌进行评级,以使它们适合一个交互用户,但不适合编程使用

我还将记录所使用的nonce,并使其一次性使用,加上速率限制获取访问令牌的能力,这样登录到第三方站点的用户就不能继续为他们想要的每个请求获取新的访问令牌


这应该可以在不影响真实客户的情况下显著限制滥用的可能性。

可能是某种小部件框架?看不到任何明显的东西。OAuth?OpenID?这些概念让我有些不知所措。不确定他们中的任何一个是否适合这里…你可以做的另一件事是将授权网站列入白名单,这样只有他们才能发出请求(我不太确定你是否可以从哪个页面获得请求,除非他们使用php脚本从你那里获取,在这种情况下,你可以使用身份验证工具)(你已经这么做了)哎呀,我没有马上看到这个响应。我会这么做的,除非所有的请求都来自客户端。我想如果我稍微调整一下速率限制,我的建议会很有效。