如何制作跨域形式的CSRF和抗重放?

发布于 2024-11-04 16:56:32 字数 396 浏览 1 评论 0原文

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

基本上,我希望有一个 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,但我希望以与语言/框架无关的方式对其进行解释

I'm contemplating making a project, but I'm wondering if cross-site request forgery would make it impossible to secure.

Basically, I want to have a web service that generates a form using the usual tricks(JSON-P and iframes) on another domain's page. So WebService.example.com generates a form's HTML, and it's shown to the user on User.example.com

This form, I assume will have to use the injected iframe trick to submit the form from javascript. Because anyone would be able to just get the same data from WebService.example.com, how can I ensure that it's actually only coming from User.example.com? Preferably, without having to have any server-side code running on User.example.com.

Note, I'll be using ASP.Net for the WebService, but I'd like it explained in a language/framework agnostic manner

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

任谁 2024-11-11 16:56:32

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

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

如果您仅针对支持 HTML5 的浏览器,则使用 postMessage,如果您需要更广泛的支持以及 RPC 等内容,则使用 easyXDM,它消除了跨域消息传递的所有麻烦。

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

This is pretty hard to do without using server side scripts on both domains.

If you change your architecture and just use Cross-Domain Messaging (host the form etc in the top domain, use iframe for communication) then you could use the XDM to verify that it is indeed the intended domain you are talking to.

If you only target HTML5-capable browsers then use postMessage, if you want broader support, and things like RPC etc then use easyXDM, which abstracts all of the hassle with cross-domain messaging.

Actually, you can host your form in either document, you just need to use the XDM-communication in order to do a successful 'handshake', verifying the origin.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文