【问题标题】:Cakephp 3 Stripe payment formCakephp 3 Stripe 付款表格
【发布时间】:2023-03-09 11:31:01
【问题描述】:

我希望有人可以帮助我了解 Stripe 应该如何与 Cakephp 3 一起使用。

我有一个带有 Stripe 支付字段的表单和我的蛋糕应用程序的几个字段。从 Stripe 文档来看,这似乎是一种可接受的设置方式。

HTML 是相当标准的,但请注意每个敏感的输入 数据—编号、CVC、到期和邮政编码—省略名称 属性。通过省略名称,这些字段中用户提供的数据 提交表单时不会传递到您的服务器。每个 元素还包含一个 data-stripe 属性,稍后会讨论。

我现在使用的是 cakephp 3,它似乎不允许我从表单助手生成的 HTML 中删除属性。我只能将“名称”属性设为空白。我在 Stripe 支持下询问了这个问题,他们有点不置可否。它们通常都很好,但在这种情况下,答案似乎是“比抱歉更安全”。

我的主要问题是:如果您不对 Stripe 字段使用表单助手,这真的很重要吗?我可以在 cake docs 中找到的主要好处是 CSRF 组件将作用于这些字段。我在整个应用程序中使用 CSRF 组件,但由于 Stripe 字段甚至没有发送到服务器,因此 CSRF 组件是无关紧要的。不是吗?

这是 Cakephp 手册的摘录:

CsrfComponent 通过为用户的浏览器设置一个 cookie 来工作。 当使用 Cake\View\Helper\FormHelper 创建表单时,一个隐藏的 添加包含 CSRF 令牌的字段。在此期间 Controller.startup 事件,如果请求是 POST、PUT、DELETE、PATCH request 组件将比较请求数据和 cookie 值。如果 要么丢失,要么组件将抛出的两个值不匹配 aCake\Network\Exception\InvalidCsrfTokenException。

对于提交到数据库的少数字段,我仍然可以使用表单助手,并且只需使用 HTML 添加 Stripe 字段吗?

这有意义吗?

Stripe 支持确实建议使用两种单独的表单,一种用于蛋糕数据,另一种用于 Stripe 数据,但由于他们的文档说您可以将 Stripe 字段添加到提交到服务器的表单中,这似乎有点奇怪。

我非常感谢您对此的一些意见,因为似乎即使 Stripe 自己也不确定如何构建 cakephp 付款表单!

【问题讨论】:

  • 如果您将名称属性设置为falsenull 会怎样?作为最后的手段,使用您定制的助手或根本不使用助手,手写表单
  • 如果可以避免的话,绝对不要包含name-attribute。那根本不安全。有没有办法在没有使用表单助手的情况下在 CakePHP 中构造表单?你不能只从原始 HTML 构建它吗?

标签: stripe-payments cakephp-3.x


【解决方案1】:

是的,原始 HTML 似乎是要走的路。

这就是我所做的。

使用表单助手来开始和结束表单(这意味着表单篡改和 CSRF 将适用于您的非 Stripe 字段)

使用 HTML 在 Cake 表单中添加 Stripe 字段(我尚未测试 HTML 字段以查看表单篡改是否适用于它们。稍后我将对其进行测试并回发)

使用 Form helper 解锁了 stripeToken 字段,因此可以将其添加到表单中,而不会篡改请求。

设置完所有这些后,我在控制器中使用了 echo debug($_POST) 来查看表单提交给服务器的内容,并且唯一显示的 Stripe 字段是 stripeToken。

所以在我看来,这是应该的。

【讨论】:

    猜你喜欢
    • 2018-09-12
    • 2017-04-16
    • 2023-04-11
    • 2015-09-23
    • 2015-03-01
    • 2017-06-03
    • 2022-11-08
    • 2020-09-18
    • 2017-04-27
    相关资源
    最近更新 更多