0

我通常会

$password = "password";
$mysqli = new mysqli("localhost", "root", $password, "database");

有没有办法给 mysqli 一个哈希密码,而不必保存存储在我的脚本中的明文形式?是否有避免在我的脚本周围使用明文密码的好习惯?这安全吗

我知道它不会是 100% 的证明,但它确实让没有可用的明文变得稍微麻烦一些?

4

2 回答 2

4

没有; 这将违背首先使用密码散列的意义。如果您可以使用散列密码登录,那么散列密码本质就是您的密码。

你可以加密它,但解密的密钥也必须存储在某个地方,所以你只是混淆密码,而不是保护它。如果他有权访问您的脚本文件,任何想要它的人都可以轻松找到它。

最终,您必须对服务器自身文件系统的安全性有所信任。您最好的选择是确保它存储在文档根目录之外,并且服务器上不需要阅读它的任何用户/组都无法读取它。

于 2013-01-22T14:05:47.430 回答
4

很不幸的是,不行。作为密码发送的就是密码。即使您要创建一个小函数来散列密码,您仍然必须使用纯文本密码。尽管如此,该散列密码仍将成为您的密码(就像您在 MySQL 中设置的那样),因此它仍然是纯文本。

由于 PHP 是一个服务器端脚本,没有人可以看到此密码,也不会将其传输到客户端,因此无法拦截。我建议使用难以猜测的密码,并确保您的脚本免受 MySQL 注入的影响,这样任何人都无法通过该路径访问您的数据库。

于 2013-01-22T14:12:30.263 回答