16.4.4 代码自身的问题

到目前为止,我们已经介绍的许多访问数据库的代码都包括了数据库名称、用户名称以及用明文表示的用户密码。如下所示:


$conn=@new mysqli("localhost","bob","secret","somedb");


尽管这很方便,但是这也是不安全的,尤其是如果破解人员能够看到我们的.php源文件,他们可以立即获得对数据库的访问,具有用户"bob"所拥有的所有权限。

最好不要将保存用户名称和密码的文件保存在Web应用的文档根目录,在脚本中再引入该文件,如下所示:


<?php

//this is dbconnect.php

$db_server='localhost';

$db_user_name='bob';

$db_password='secret';

$db_name='somedb';

?>

<?php

include('../code/dbconnect.php);

$conn=@new mysqli($db_server,$db_user_name,$db_password,

$db_name);

//etc

?>


对于其他同样敏感的数据,也需要这样访问,这样就带来了安全保护的中间层。