paypal_adaptive gem 的安全问题
Posted
技术标签:
【中文标题】paypal_adaptive gem 的安全问题【英文标题】:Security concerns with paypal_adaptive gem 【发布时间】:2012-02-10 02:58:47 【问题描述】:我在 Rails 3.1 中使用 paypal_adaptive gem 进行链式支付。然而,在观看http://railscasts.com/episodes/143-paypal-security 之后,我开始担心我可能应该在我的付款请求中添加安全措施。具体来说,我不希望有人能够操纵我在请求中发送的商品的价格。当然,我使用的是标准的 paypal_adaptive gem 请求:
pay_request = PaypalAdaptive::Request.new
data =
"returnUrl" => "http://testserver.com/payments/completed_payment_request",
"requestEnvelope" => "errorLanguage" => "en_US",
"currencyCode"=>"USD",
"receiverList"=>"receiver"=>["email"=>"testpp_1261697850_per@nextsprocket.com", "amount"=>"10.00"],
"cancelUrl"=>"http://testserver.com/payments/canceled_payment_request",
"actionType"=>"PAY",
"ipnNotificationUrl"=>"http://testserver.com/payments/ipn_notification"
pay_response = pay_request.pay(data)
if pay_response.success?
redirect_to pay_response.approve_paypal_payment_url
else
puts pay_response.errors.first['message']
redirect_to failed_payment_url
end
我的问题是:我是否需要加密此请求以防止人们像 Ryan 在他的 rails cast 中那样更改价格?如果是这样,我该如何操作这段代码呢?
【问题讨论】:
【参考方案1】:IPN 验证绝对是一个好习惯。但是关于加密发送的变量;不,那没有必要。
http://railscasts.com/episodes/143-paypal-security 上列出的示例使用网站支付标准,在这种情况下, 最好对其进行加密。
但 Adaptive Payments 是一系列从您的服务器到 PayPal 的服务器到服务器 API 调用(“支付”API)。唯一暴露给买家的部分是 payKey,这是一个买家无法操作的临时代币。
【讨论】:
谢谢,罗伯特!我会接受这个作为答案。但是有一个问题,有点不相关:我一直在使用这些 API 调用来访问沙箱中的帐户——你知道我是否需要 Website Payments Pro 才能在生产中进行这些 API 调用吗?我一直在努力寻找这个问题的答案,而且你似乎对 Paypal 很了解,所以我想我会问。 不,您不需要网站支付专业版;如果您想使用 DoDirectPayment API 调用,则需要使用 Website Payments Pro。对于自适应支付,您需要通过 x.com 提交申请,之后您将获得申请 ID。您需要确保在 HTTP 标头中传递此应用程序 ID(您可能已经在做这件事,现在在 Sandbox 中)。 我自己不使用 Adaptive Payments(我不需要链式/拆分式付款,因此我不需要它),但您可以在 paypal.com/dts 使用 PayPal 登录票证以获取启动应用程序所需遵循的确切步骤。 谢谢。非常有用的 cmets。以上是关于paypal_adaptive gem 的安全问题的主要内容,如果未能解决你的问题,请参考以下文章