【问题标题】:How should I encrypt my data in a PHP application?我应该如何在 PHP 应用程序中加密我的数据?
【发布时间】:2011-10-13 14:09:53
【问题描述】:

我在尝试使用 Paypal PHP SDK 时注意到一条警告,说我应该加密我的 API 用户名和密码以在生产环境中使用。我同意这个说法,但我想知道我应该如何去做。我目前不知道。

以下是警告内容,仅供记录:

不要在您的应用程序代码中嵌入明文凭据。这样做 不安全且违反最佳实践。您的 API 凭据必须是 安全地处理。请考虑加密它们以用于任何 生产环境,并确保只有授权的个人 可以查看或修改它们。

提前致谢。

【问题讨论】:

  • 编码!=加密。什么意思?
  • 哦,抱歉,在 OP 中有一些错别字和错误。是的,我的意思是加密和 PHP Paypal SDK。现在更正。
  • @Gabrielle:你在共享服务器上吗?

标签: php encryption passwords production-environment


【解决方案1】:

通常,您可以将这样的凭据存储在 Web 根目录之外的文件中。这限制了风险,但并不能完全消除风险。

如果他们可以看到您的代码(或者更糟的是,编辑它),那么他们无论如何都可以获得您的凭据。对其进行加密意味着您需要在与用户名/密码本身一样可见的地方使用您的加密密钥。

【讨论】:

  • 感谢您的回答,但如果我无法访问 Web 文件夹的根目录,该怎么办?似乎与将凭据存储为纯文本相比,在安全性方面并没有太大区别。
  • 使用 .htaccess 阻止对其的访问
【解决方案2】:

首先,设置一个加密密钥:

$key = 'yourpasswordhere';
$string = ' confidential information here '; // note the spaces

在数据库条目或从另一个文件中对其进行加密,并且仅将加密的字符串存储在文件本身中:

$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
var_dump($encrypted); // "ey7zu5zBqJB0rGtIn5UB1xG03efyCp+KSNR4/GAv14w="

稍后解密:

$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
var_dump($decrypted); // " confidential information here "

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多