自定义PayPal按钮的自动OpenSSL加密?PHP


Automatic OpenSSL encryption for custom PayPal Buttons? PHP

我目前正在尝试将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

有什么想法吗?

由于时间限制,我刚刚浏览了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二进制文件来完成这项工作。

无论如何,你应该小心:

  • 仔细验证所有输入,因为您可能会签署恶意数据

  • 如果直接调用二进制文件,请确保不会实现任何类型的操作系统命令注入漏洞。