我目前正在尝试将 PayPal 立即购买功能添加到我自定义创建的第三方购物车中。通常,这些按钮仅包含有关正在购买的特定商品的信息,出于安全原因,这些信息是通过 PayPal 网站手动输入的,但是我也可以选择使用 PHP 动态创建信息以注入(inject)正确的信息——这很好,但是因为该按钮不是在 PayPal 网站上创建的,它没有随附可防止其被篡改的标准加密。
在 PayPal 网站上,他们概述了加密方法,包括使用 OpenSSL 创建私钥、公共(public)证书,以及作为一种加密 PayPal 按钮代码的方法。创建 key 和证书听起来不错,但是当需要对按钮代码本身进行加密时,PayPal 要求我在下载的 OpenSSL 程序中手动输入命令以输出加密代码——但这对我的购物车来说是不可能的,因为事实上,购物车内容是动态的并且一直在变化,因此每次有人访问“购物车”页面时我都需要一个新的加密按钮。
问题:所以我想知道我是否可以使用诸如 openssl_encrypt()
之类的 PHP 函数来处理加密过程,而不是依赖手动操作。这可能吗?这安全吗?
注意:下载的 OpenSSL 软件连同必要的 key 位于我的网络服务器上
我强烈建议快速查看此链接以获取有关 PayPal 概述的简短加密过程的更多信息:https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/encryptedwebpayments/#id08A3I0P0MRO
有关输入手动命令的信息,请单击链接并向下滚动到“使用下载的软件手动加密支付按钮代码”标题。
PS:这是我第一次处理任何类型的加密或 OpenSSL
有什么想法吗?
最佳答案
由于时间限制,我只是浏览了 PayPal 文档。
首先,在不知道自己在做什么的情况下使用任何类型的加密都是不好的,并且可能很容易导致安全问题。
但让我们看看您要实现的目标以及我“阅读”的内容。
您必须上传您的公钥(不是您的私钥)并下载他们的公钥(证书)。
术语“加密支付按钮代码”
听起来是错误的,因为您可能只需要加密一些参数(但在我有很短的时间时会涉及到太多细节)。
无论如何,这个“按钮代码”必须使用他们的公钥/证书进行(非对称)加密,这意味着只有 PayPal 才能解密它。
下一步,这个“加密按钮代码”必须用您的私钥签名。然后 PayPal 可以检查消息的真实性,因为他们拥有您的公钥(并且只有您可以签名 - 所以请妥善保管您的私钥!)。
string openssl_encrypt (string $data, string $method, string $password [, int $options = 0 [, string $iv = ""]])
或者也许
int openssl_seal(字符串 $data,字符串 &$sealed_data,数组 &$env_keys,数组 $pub_key_ids [,字符串 $method = "RC4"])
是可以使用的方法。
或者,可以直接调用 openssl 二进制文件来完成这项工作。
无论如何,你应该小心:
仔细验证所有输入,因为您可能会签署恶意数据
如果您直接调用二进制文件,请确保您不会实现任何类型的操作系统命令注入(inject)漏洞。
关于php - 自定义 PayPal 按钮的自动 OpenSSL 加密? PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36159659/