问题描述
我需要将Stripe Client Intent机密传递给Javascript以执行一些代码。我现在正在这样显示。但这可能不是一种非常安全的信息传递方式。
<input type="hidden" id="intent_data_client_secret" value="{{ $intent_data_client_secret }}">
根据此处链接的Stripe文档:CHAR
。
客户密码可用于通过以下方式完成付款过程: PaymentIntent上指定的金额。它不应该被记录, 嵌入到网址中,或暴露给客户以外的任何人。使 确保在包含客户端的任何页面上启用了TLS 机密。
将安全令牌传递给javascript的更好方法有哪些?
解决方法
这实际上是一种很好的方法,您可以在example integration guide的“服务器端呈现”标签下看到一个示例。
模板:
<button id="card-button" data-secret="{{ client_secret }}">
Submit Payment
</button>
服务器代码:
app.get('/checkout',async (req,res) => {
const intent = // ... Fetch or create the PaymentIntent
res.render('checkout',{ client_secret: intent.client_secret });
});
替代方法是同一指南中“单页应用程序”标签下的内容,向您自己的后端/ api发出客户端请求以检索“付款意图”或“结帐会话”的机密:
客户:
var response = fetch('/secret').then(...)
服务器:
app.get('/secret',res) => {
const intent = // ... Fetch or create the PaymentIntent
res.json({client_secret: intent.client_secret});
});