自定义 PayPal 按钮的自动 OpenSSL 加密? PHP
Posted
技术标签:
【中文标题】自定义 PayPal 按钮的自动 OpenSSL 加密? PHP【英文标题】:Automatic OpenSSL encryption for custom PayPal Buttons? PHP 【发布时间】:2016-07-09 15:37:49 【问题描述】:我目前正在尝试将 PayPal 立即购买功能添加到我自定义创建的第三方购物车中。通常,这些按钮仅包含有关正在购买的特定商品的信息,出于安全原因,这些信息是通过 PayPal 网站手动输入的,但是我也可以选择使用 php 动态创建信息以注入正确的信息 - 这一切都很好,但是因为该按钮不是在 PayPal 网站上创建的,它没有使用标准加密来保护它不被篡改。
在 PayPal 网站上,他们概述了加密方法,其中包括使用 OpenSSL 创建私钥、公共证书以及加密 PayPal 按钮代码的方法。创建密钥和证书听起来不错,但是当需要对按钮代码本身进行加密时,PayPal 要求我手动将命令输入到下载的 OpenSSL 程序中以输出加密代码 - 但是这对我的购物车来说是不可能的,因为事实上,购物车内容是动态的并且一直在变化,因此每次有人访问“购物车页面”时我都需要一个全新的加密按钮。
问题:所以我想知道是否可以使用诸如openssl_encrypt()
之类的PHP 函数来处理加密过程,而不是依赖手动操作。这可能吗?这还安全吗?
注意:下载的 OpenSSL 软件连同必要的密钥位于我的网络服务器上
我强烈建议快速查看此链接,以获取有关 PayPal 概述的简短加密过程的更多信息:https://developer.paypal.com/docs/classic/paypal-payments-standard/integration-guide/encryptedwebpayments/#id08A3I0P0MRO 有关输入手动命令的信息,请单击链接并向下滚动到“使用下载的软件手动加密支付按钮代码”标题。
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 命令注入漏洞。
【讨论】:
是的,我目前正在追求使用 openssl 二进制文件来完成这项工作的想法,这似乎是我工作的最佳解决方案。感谢 os 命令注入漏洞警告,请注意。 (另外,是的,我的意思是公共证书而不是私钥对不起)以上是关于自定义 PayPal 按钮的自动 OpenSSL 加密? PHP的主要内容,如果未能解决你的问题,请参考以下文章