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

标签 php ssl encryption paypal openssl

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

相关文章:

IPv6 的 PHP preg_match 问题

java - PKIX 路径构建失败。我们应该导入证书吗?

ssl - nginx SSL 无起始行 : expecting: TRUSTED CERTIFICATE

sockets - ESP32 MicroPython SSL WebSocket 服务器失败

java - java中的 keystore 密码加密

mysql - 静态和/或AES_ENCRYPT加密

php - 使用 jQuery 获取页面上的复选框并将值放入字符串中以发送 ajax 调用

java - 当我发送推送时 android 应用程序崩溃

javascript - 删除 WordPress 上每个文档开头的两行 JS 代码

security - 加密、哈希和密码问题,完全是菜鸟?