【发布时间】:2014-07-23 03:05:01
【问题描述】:
与my last question相关,我有一个新的。
什么是通过 https 发送加密数据更安全的方式。
-
将 signAndEncrypt 函数与 openssl_pkcs7_encrypt 一起使用并通过表单元素发送返回数组...
$encryptedData = "-----BEGIN PKCS7-----" . str_replace("\n", "", <br/> $encryptedDataReturn['encrypted_data']) ."-----END PKCS7-----"; $encryptedRequest=<<<PPHTML <html> <header> </header> <body onload="document.getElementById('paypal_form').submit();"> <br/><br/><br/><br/> <center> <h2>Please wait, your order is being processed and you will be redirected to the paypal website. </h2> </center> <form id="paypal_form" method="POST" action="{$this->gatewayUrl}"> <input type="hidden" name="cmd" value="_s-xclick"> <input type="hidden" name="encrypted" value="$encryptedData"> </form> </body> </html>PPHTML;
或者像这样使用 curl
2.
$curlOptions = array (
CURLOPT_URL => Config::MERCHANT_SANDBOX_SIGNATURE_ENDPOINT,
CURLOPT_VERBOSE => 1,
CURLOPT_SSL_VERIFYPEER => true,
CURLOPT_SSL_VERIFYHOST => 2,
CURLOPT_CAINFO => $this->publicCertificate,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_POST => 1,
CURLOPT_HEADER => true,
CURLOPT_POSTFIELDS => http_build_query($data)
);
$ch = curl_init();
curl_setopt_array($ch,$curlOptions);
//Sending our request - $response will hold the API response
$response = curl_exec($ch);
我正在尝试寻找最安全的方式将数据发送到 paypal api。
首先我混合了这两个函数,并将加密的 nvp 添加到CURLOPT_POSTFIELDS。但这给了我来自贝宝的一堆错误。所以我做了双重加密。当我将 postfields 保留为未加密时,paypal api 会给我success。
我的问题:
1。将curl 与公共证书一起使用是否足够安全?
2。是否可以将pkcs7 加密(或类似加密)与curl 一起使用?
3。我是否正确假设在通过 curl/https 将数据发送到贝宝之前无法加密后字段,因为当我这样做时,贝宝会给我失败响应?
请帮忙。
你好,ninchen
【问题讨论】:
-
如果使用 https 添加其他任何东西似乎毫无意义
-
您是否有理由使用 PayPal Standard 并加密这些按钮而不是使用 Button API?甚至做 ExpressCheckout?
-
@PP_MSI_Aaron 也许是使用 Button API 的更好解决方案,但为什么呢?我使用 ExpressCheckout。你问,是因为 html 表单看起来像 PayPal Standard?
-
HTML 表单是 PayPal 标准。使用 encrypted= 创建动态按钮需要您将证书上传到您的贝宝帐户。请参阅Developer's Guide 以保护 PayPal 标准按钮。
标签: php curl encryption paypal