首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将授权令牌从父窗口发送到iframe源文件,以便iframe源文件可以进行调用。

将授权令牌从父窗口发送到iframe源文件,以便iframe源文件可以进行调用。
EN

Stack Overflow用户
提问于 2020-10-29 13:02:50
回答 1查看 1.9K关注 0票数 1

我正在开发一个SDK,它允许为没有权利拥有信用卡数据(cc_data)的电子商务公司(商家)接受在线信用卡支付。目前,我正努力想出一个合适的解决方案来保护API。

当前解决方案使用无状态会话(不会更改),如下所示:

付款形式初始化

  • 商家发出API调用,使用http基本身份验证启动支付;
  • 作为回应,商家被给予支付链接和一个令牌;
  • 商家使用支付链接来调用iframe :对于每个输入(名称、cc_number等)都有一个iframe,包括作为iframe的提交。这将提供尽可能少的预设计,使商家可以设计自己的付款形式;

Iframes,收集cc_data并提交

  • 对于每个iframe,都有相应的带有javascript的html。例如name.html和name.js,submit.html和submit.js。输入的数据被存储到会话存储中;
  • 一旦提交被推送,submit.js将对payment端点(我们自己的服务器,因此使用CSRF令牌)进行AJAX调用来发布cc_date。

问题

现有的支付API端点也需要给予商家的令牌,但我没有找到从商家那里获得它的合理解决方案,因为系统是无状态的。在某种程度上,我的解决方案没有遵循标准的令牌授权,因为用户(在我的例子中是商人)没有调用该操作,因此将令牌提供给用户来授权其操作。我只使用我自己的服务器提供的CSRF令牌来调用它。

可能的解决方案

在某种程度上,在我看来,也许我应该放弃象征性授权的想法,因为这不是它的情况-商人没有打电话,因此不需要授权(在付款过程中它已经验证了自己的身份)。但一些开发人员确实指出,在我的情况下,CSRF令牌可能不够安全,因为他们有可能访问它(例如,模仿web浏览器保存令牌),然后他们能够在令牌有效的时候滥用支付API端点。

考虑到前面提到的情况,我仍然试图找到一种解决方案,以便以一种能够启用API安全性的方式来通信授权令牌。显然,可能的解决方案是使用postMessage()将令牌从商人(父窗口)发送到submit.js (iframe原产地)。但是我不太喜欢这个想法,因为有很多可能的起源,标记可以从那里来,因此我不能做一个合理的过滤器,在那里我排除了信息的来源。向服务器发送令牌不是一种选择,因为它是无状态的.并调用iframes不提供包含标头的可能性。

建议想法

因此,目前我正在寻找解决方案,并认为堆栈溢出可能是最好的地方征求意见。也许我应该完全改变我目前的概念证明(这意味着我的问题没有很好的解决方案),所以在这个层面上的建议也是值得欢迎的。当然,重要的是要考虑到服务器是无状态的,cc_data不能到达商家,而且整个支付表单的设计应该尽可能地受商家的控制。

谢谢你提前给我建议。

这是我第一次在Stackoverflow上发表文章(几周前我还是个初级开发人员),也是一个新的有趣的体验。

编辑:业务需要

  • 付款不重定向,付款表格显示在商家的网站上;
  • 商家应该对付款形式的设计有尽可能多的控制(在初始化支付时,商家也可以为iframe的来源选择样式);
  • 商人不得进入cc_data (或以商人可以理解的形式占有)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-01 08:05:33

实际上,第二天我自己解决了这个问题,但我想先在实践中检查我的解决方案。答案其实很简单:,double submit cookies,

因此,只要使用submit.html (如果是submit.js按钮,负责向API端点发送支付数据)调用submit.js,它就会从后端服务器获得一个CRSF令牌。服务器还将使用https安全cookie将加密的cookie附加到submit.html。

现在,每当submit.js调用API端点时,CSRF令牌将被发送回标头。后端服务器获取它附加到submit.html的加密cookie,对其进行解密,并将其与标头中的CRSF令牌进行比较。如果有匹配,则请求有效。

更多信息可以在这里找到:OWASP作弊

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64591656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档