【发布时间】:2014-09-01 19:02:17
【问题描述】:
我已经在一个 Laravel 项目中实现了 Stripe。我对服务器端的 Stripe 的安全性和最佳实践有疑问。
例如,我为我的网站提供了三种订阅计划(比如说免费试用、基本和专业)。在 Stripe 验证用户的付款并向我发送交易令牌后,我将此令牌与用户选择的订阅一起发送到我的服务器,然后我在服务器上实际向用户收费。这个 sn-p 显示了执行这个过程的表单提交代码。
$('#ButtonForBasicSubscription').click(function(){
var token = function(res){
var $token = $('<input type=hidden name=stripeToken />').val(res.id);
var $plan = $('<input type=hidden name=selectedPlan />').val('basic');
$('form').append($token,$plan).submit();
};
StripeCheckout.open({
key: 'pk_my_publishable_key',
address: false,
amount: 100,
currency: 'gbp',
name: 'My Product',
description: 'Basic Subscription',
panelLabel: 'Make Payment',
token: token
});
然后在我的服务器上测试 selectedPlan 输入,然后根据该值,使用 stripeToken 向用户收费。
我关心的是我发送 selectedPlan 变量的方式。我想不出更好的方法来做到这一点(尽管我确信必须有),我担心(邪恶的)用户可能会拦截 Stripe 令牌并将其提交到我的服务器不同的 selectedPlan 值(例如,某人选择了基本订阅,完成了对 Stripe 的付款,但随后使用“专业”selectedPlan 值而不是“基本”值提交返回的令牌" selectedPlan 到我的服务器)。这将为用户提供已支付基本订阅费用的专业订阅。
这甚至可能吗?或者我是否已经从一个中立的怀疑论者变成了过度的偏执狂。
非常感谢任何帮助或指导。
【问题讨论】:
-
为了防止中间人攻击通过 https 发送您的数据。为防止重放攻击,请确保您的令牌生成功能强大且合理。
标签: php laravel-4 stripe-payments