2011-06-15 62 views
2

我需要找到一种方法来通知第三方网站有关我的网站上的用户操作。不需要服务器端连接。使用私钥散列用于签署请求,以便用户不能滥用它。HTML/Javascript:跟踪回拨到外部网站

我的问题是我如何安全地发送此请求。

  • 跟踪图像:XSA可能
  • iframe中:XSA,帧断路器
  • 脚本包括:恶在其最好
  • JSONP(用jQuery):??
  • 其他?

有人知道是否有可能在JSONP答案中注入JavaScript?我的意思是绕过浏览器边界JSONP是Javascript,它调用JSON作为参数的函数,但它也可能包含其他JavaScript调用。 jQuery是否以某种方式检查jsonp回调中是否存在恶意内容?

+0

查看RPC http://en.wikipedia.org/wiki/Remote_procedure_call – Chumillas 2011-06-15 12:06:32

+0

如果您不信任第三方,那么您不应该使用JSONP。这只是一个脚本,包括一个商定的回调。 – Magnar 2011-06-15 14:10:26

回答

0

如果您只需定位到现代浏览器,并控制所有域,则可以创建HTTP访问控制策略以允许它们相互通信。但是,由于看起来不是这种情况,你将会被JSONP困住。

有趣的是,你提到“脚本包括”是“最好的恶魔”,因为这正是JSONP的意义所在。由于直到最近,浏览器都无法跨域请求,从第三方客户端获取任何内容的唯一方法是包含来自第三方的脚本。 JSONP只是利用这个解决方法返回函数定义中的JSON,然后脚本可以调用它来获取包含的数据。

+0

是的,那是我的问题。如果JSONP是“解析”的,就像jQuery可以解析JSON或者它只是一个简单的脚本包含。绕过边界JSONP必须是直接脚本包含,不是吗?因此,所有内容都将被执行,而不仅仅是jsonp回调函数。编辑:不,我不控制域名。我想一个跟踪将是最好的。 XSA仍然是一个问题,但它存在于许多页面上。 – Spammer 2011-06-27 13:09:25

+0

不完全。 JSONP是一种非常具体的格式:由回调函数包装的JSON响应。你只能够摆脱这种非常有限的JavaScript。把你喜欢的任何JS代码放在一起并不是一个普遍的反应。 – 2011-06-27 14:22:10