【问题标题】:The safer way to encrypt更安全的加密方式
【发布时间】:2014-07-23 03:05:01
【问题描述】:

my last question相关,我有一个新的。

什么是通过 https 发送加密数据更安全的方式。

  1. 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


【解决方案1】:

当谈到加密和安全性时,您的第一个答案应该是做任何标准的事情。出于某种原因,它是标准的,并且可以预期是相当安全的。如果发现漏洞,您将需要更新,但其他人也需要更新。尝试一个聪明的技巧来“更安全”通常意味着你最终会得到一些不那么安全的东西。

请参阅this answer 进行详细讨论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-22
    • 2012-04-23
    • 2011-07-10
    • 2015-11-21
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多