如何使跨域表单CSRF和重放抗性?

时间:2011-05-01 03:41:45

标签: html json cross-domain csrf

我正在考虑制作一个项目,但我想知道跨站点请求伪造是否会使其无法保护。

基本上,我希望有一个Web服务,可以在另一个域的页面上使用常用技巧(JSON-P和iframe)生成表单。因此,WebService.example.com生成表单的HTML,并在User.example.com上向用户显示

这个表单,我假设必须使用注入的iframe技巧从javascript提交表单。因为任何人都可以从WebService.example.com获取相同的数据,我怎样才能确保它实际上只来自User.example.com?最好不必在User.example.com上运行任何服务器端代码。

注意,我将使用ASP.Net作为WebService,但我希望它以语言/框架无关的方式解释

1 个答案:

答案 0 :(得分:1)

如果不在两个域上使用服务器端脚本,这很难做到。

如果您更改架构并仅使用跨域消息传递(在顶级域中托管表单等,使用iframe进行通信),那么您可以使用XDM来验证它确实是您正在与之交谈的目标域。

如果你只针对支持HTML5的浏览器,那么使用postMessage,如果你想获得更广泛的支持,那么像RPC等那样的东西就会使用easyXDM,这会消除所有跨域消息传递的麻烦。

实际上,您可以在任一文档中托管表单,只需使用XDM通信即可成功进行“握手”,验证origin