小部件显示在客户端网站


Widget to display in clients website

我有一个小部件,我需要发布到客户网站。它基本上是一个用户要填写的表单,我们对数据进行一些计算,然后显示结果。我如何才能做到这一点,同时保护正在运行的代码在另一个域,不支付此服务?

您可以创建一种与客户签订合同的服务密钥(API-Key)。客户需要在他的服务器上放置一个小PHP脚本来处理您的小部件输入。该脚本针对打开服务会话(session-key)的服务建立身份验证。

会话密钥可以公开地用于一个小部件请求。

服务器上正在进行的处理可以在此会话中处理。如果不存在这样的会话,服务器将拒绝处理。

没有为服务付费的站点没有service - key,因此它们不能实例化会话。服务密钥是服务和客户之间的共享秘密。

使用此方法,您还可以跟踪请求属于哪个客户。检查HTTP引用是安全的,这是一个错误的概念。

最简单的解决方案是检查请求IP或HTTP引用器—如果它在白名单上,则显示结果。请记住,HTTP标头可以伪造,并且依赖它们并不是100%安全。

更安全的是采用跨站点请求伪造解决方案- http://en.wikipedia.org/wiki/Cross-site_request_forgery。网上有很多文章,你可以从CSRF(跨站请求伪造)攻击的例子和在PHP中的预防