mysql登录凭据在这里有多安全


how safe are mysql login credentials in this

如果以下代码存储在www.examples.com/test.php 中

mysql_connect("localhost", "user", "password") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());
$result = mysql_query("SELECT * FROM table");
...

密码是否安全?如果没有,防止对信息进行不必要的访问的最佳做法是什么?谢谢

只要没有人可以访问test.php的文本内容,它就很安全。一个合理的最佳实践是将凭据存储在访问用户无法访问的地方,这样,如果example.com的内容放在文件夹/some/path/to/www-data中,则可以将文件放在其他地方,如/some/path/to/credentials.php。这样,网络服务器仍然可以加载文件,但外部用户将无法访问它

此外,当我们讨论MySQL/PHP最佳实践时,请注意mysql_函数已经被弃用,这是有充分理由的。相反,我建议您使用mysqli_(其中I表示改进)或PDO。您可以在这里阅读更多关于它的信息:如何防止PHP中的SQL注入?

一种解决方案是将.inc文件放在非根目录中并包含此文件,因为您可以在require和include 中使用文件路径

<?php
$host = 'example.org';
$username = 'myuser';
$password = 'mypass';
$db = mysql_connect($host, $username, $password);
?>

如果必须将其放在根文件夹中,则对httpd.conf进行一些修改可以应用一些额外的安全性(假设您使用的是apache)

<Files ~ "'.inc$">
Order allow,deny
Deny from all
</Files>

PHP是一种服务器端语言,这意味着客户端设备永远不会真正看到任何PHP代码。

这意味着,您拥有的任何密码都是完全安全的,不受客户端设备的影响。

Web服务器的特权用户仍然可以访问包含登录信息的文件。