我目前正在尝试将PayPal立即购买功能添加到我自定义创建的第三方购物车中 . 通常,这些按钮仅包含有关所购买的特定商品的信息,这些信息是出于安全原因通过PayPal网站手动输入的,但我也可以选择使用PHP动态创建信息以注入正确的信息 - 这一切都很好但是从那以后该按钮不是在PayPal网站上创建的,它没有标准加密来保护它免受篡改 .
在PayPal网站上,他们概述了加密方法,包括使用OpenSSL创建私钥,公共证书,以及加密PayPal按钮代码的方法 . 创建密钥和证书听起来很好但是当加密按钮代码本身时,PayPal要求我手动将命令输入到下载的OpenSSL程序中以输出加密代码 - 但这对我的购物车来说是不可能的购物车内容是动态的并且一直在变化的事实,因此每当有人访问“购物车”页面时我需要有一个新加密的按钮 .
QUESTION: 所以我想知道我是否可以使用诸如 openssl_encrypt()
之类的PHP函数来处理加密过程而不是依赖于手动操作 . 这可能吗?这甚至安全吗?
注意:下载的OpenSSL软件与必要的密钥一起位于我的Web服务器上
我强烈建议您快速查看此链接,了解有关PayPal概述的短加密程序的更多信息:https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/encryptedwebpayments/#id08A3I0P0MRO
有关输入手动命令的信息,请单击链接并向下滚动到"Use the Downloaded Software to Manually Encrypt the Payment Button Code" Headers .
PS:这是我第一次处理任何类型的加密或OpenSSL
有任何想法吗?
1 回答
由于时间限制,我只是浏览了PayPal文档 .
首先,在不知道自己在做什么的情况下使用任何类型的加密都很糟糕,并且很容易导致安全问题 .
但是,让我们来看看你想要实现的目标以及我“阅读”的内容 .
您必须上传您的公共(不是您的私钥)并下载他们的公钥(证书) .
术语
"Encrypt the payment button code"
听起来不对,因为您可能只需要加密一些参数(但是我在短时间内会得到太多细节) .无论如何,这个“按钮代码”必须通过使用他们的公钥/证书进行(不对称)加密,这意味着只有PayPal可以解密它 .
在下一步中,必须使用您的私钥对此“加密按钮代码”进行签名 . 然后,PayPal可以检查邮件的真实性,因为它们拥有您的公钥(只有您能够签名 - 所以请保持您的私钥安全!) .
string openssl_encrypt ( string $data , string $method , string $password [, int $options = 0 [, string $iv = "" ]] )
或者可能
int openssl_seal ( string $data , string &$sealed_data , array &$env_keys , array $pub_key_ids [, string $method = "RC4" ] )
是可以使用的方法 .
或者,可以直接调用openssl二进制文件来完成工作 .
无论如何,你应该小心:
仔细验证所有输入,因为您可能会签署恶意数据
如果直接调用二进制文件,请确保不会实现任何类型的os命令注入漏洞 .