我应该如何在PHP应用程序中加密我的数据?

时间:2011-07-26 16:33:37

标签: php encryption passwords production-environment

我试图使用Paypal PHP SDK,我注意到一条警告说我应该加密我的API用户名和密码,以便在生产环境中使用。我同意这个说法,但我想知道我应该怎么做。我目前没有任何线索。

这是警告所说的,仅供记录:

  

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

通常,您可以将此类凭据存储在Web根目录之外的文件中。这限制了风险,但并没有完全摆脱它。

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

答案 1 :(得分:1)

首先,设置加密密钥:

$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 "