使用时:
$con = mysql_connect('localhost','user','password')
我已经阅读了将密码部分存储在其他地方的好处(https://stackoverflow.com/a/3354457/1704651)。
我对 PHP 还很陌生,想知道我存储 MySQL 密码的方法是否安全:
- 第一步,选择一个冗长的 MySQL 数据库密码 ( https://www.random.org/passwords/?num=1&len=24&format=html&rnd=new )
第二步,把这个放在 /outsidewebroot/salt.php (我的实际盐更长)
<?php $salt = sdcjbdt8veADJbyuQxsfJtYeW7tC5; ?>
第三步,使用临时 PHP 文件(使用后删除)对密码进行编码:
$decrypted = "my decrypted MySQL password" $key = $salt; $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $decrypted, MCRYPT_MODE_CBC, md5(md5($key)))); var_dump($encrypted);
第四步,将此代码放入.htaccess
SetEnv encrypted-password i3NOByNkztBtEbJ8LJMt2GbX9VjMzO2MTYtBXsxyYVI=
第五步,把这段代码放在你需要连接数据库的地方:
require_once("../../outside-webroot/salt.php") $key = $salt $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($encrypted-password), MCRYPT_MODE_CBC, md5(md5($key))), "\0"); $con = mysql_connect('localhost','user',$decrypted)
/outsidewebroot/salt.php 中的盐与我在数据库中用于散列密码的盐相同,因此我只需将其包含一次以供两次使用。
我在这里看到的加密/解密方法:http: //ideone.com/yQIAX
我也见过这种方法:https ://stackoverflow.com/a/3354457/1704651使用哈希而不是加密/解密方法。
感谢您对我的方法的反馈。