实现openssl会阻止用户更改按钮值吗?

时间:2011-05-05 07:16:21

标签: paypal openssl

实施openssl会阻止用户更改按钮值吗? 我研究过加密按钮,从托管到使用openssl。 使用托管按钮会以灵活性为代价提供安全性,尽管有些变量可以覆盖,但仍然无法覆盖重要的变量。

  1. 在我的网络服务器上使用和实现openssl会阻止用户更改非托管的PayPal按钮吗?

  2. 或者回到托管按钮并使用IPN使用/验证会更好吗?

2 个答案:

答案 0 :(得分:0)

最好的解决方案是使用Express Checkout。这使您可以比标准按钮为您提供更大的灵活性。

如果您正在考虑使用IPN,那么您可能足以集成Express Checkout。实际上,它是1个API调用,然后是重定向到PayPal,还有至少1个API调用来完成付款。

典型的流程如下:

  1. 调用SetExpressCheckout API。如果您对此不熟悉,可以使用PayPal的NVP API界面轻松实现这一目标。您只需将数据作为GET NVP字符串发送到https://api-3t.paypal.com/nvp,然后以相同的格式获得回复。
  2. 从响应中获取令牌,然后重定向到https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=XXXXXXXhttps://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=XXXXXXX进行沙箱测试)
  3. 一旦买家退回,PayPal会向您的RETURNURL追加PAYERID。如果找不到,请调用GetExpressCheckoutDetails API并提供令牌以进行检索。
  4. 使用PAYERID和TOKEN,拨打DoExpressCheckoutPayment以完成付款。
  5. 要开始使用此功能,我建议您查看他们在https://www.x.com/community/ppx/sdks#NVP提供的PHP NVP SDK

答案 1 :(得分:0)

我的回答是非PayPal特定的(适用于任何类型的HTTP表单输入),但简短的回答是否定的。甚至SSL也无法阻止浏览器修改它收到的表单值。

用户可以在加载后使用bookmarklet在页面上执行自己选择的JavaScript程序,该程序可以更改表单值。因为SSL仅保护浏览器和服务器之间的传输,而不是在浏览器处理页面之后,所以无论您是否使用它都没有任何区别。

这可以通过Greasemonkey实现自动化,这是同样的想法,除了让用户更容易安装其他人的JavaScript程序在您的网页上运行。如上所述,使用SSL根本不会影响这一点,因为它都是执行客户端,您作为服务器无法控制。

正如您所提到的,使用加密的PayPal按钮可以解决问题,因为任何对按钮参数的修改都会使校验和无效,而PayPal也不会接受该项目。