使用PHP安全地连接MySQL的最佳方式是什么?

22

我想请教大家,使用PHP连接MySQL数据库的最安全方式是什么?目前我的做法是创建一个实用的PHP文件,并将其包含在我所有其他PHP文件的顶部。这个实用的PHP文件是这样的:

<?php
    if(!defined('IN_PHP')){
        die("hackerssss");
    }
    $mysql_host = "localhost";
    $mysql_user = "root";
    $mysql_pass = "root";
    $mysql_db = cokertrading;
?>

有什么建议吗?


15
“secure” 的意思是安全的。安全的防范对象是什么? - Pekka
2
你缺少引号:$mysql_db = "cokertrading"(除非它是一个常量)。这里的defined('IN_PHP')检查并不真正有用,因为你只是定义变量,而不是立即连接。 - Lekensteyn
4
@tim,你的本地机器是否连接到互联网? - Daniel Vandersluis
12
我很喜欢那些“如果你的用户名/密码是root/root,那么你就是个蠢货”的评论和回答。如果你要发布有关安全性的PHP源代码,你不会在帖子中放置你真正的用户名和密码,对吧? - Thomas Clayson
4
@Thomas 我曾经看到有人在SO上发布了他们真实的密码...有时候人们会犯错误。 - Daniel Vandersluis
显示剩余6条评论
5个回答

26

建议:您通常不应该以root身份运行;创建另一个帐户并为其分配站点所需的“最小”权限。


12
赞成“最小权限”方法,加一。 - Pekka
4
+1 表示使用分号进行更正;root 不是一个好主意。 - matt_h
然后实现我的解决方案 ;p - Theodore R. Smith

9

6
  • 定义一对适当的登录凭证,而不是使用"root/root"(将用户名更改为其他内容,并选择复杂的密码);

  • 如果可能,在防火墙级别上限制对数据库的访问仅限于本地主机,或者如@Scott在评论中所说,设置mySQL仅监听来自127.0.0.1的连接。如果两者都不可能,请在mySQL级别上限制访问("用户名"@"localhost")。


防火墙规则并不是一个坏主意,但它们是不必要的。你可以通过更改MySQL配置仅监听127.0.0.1来实现相同的效果。 - Scott Arrington
除非在文件的其他地方定义了cokertrading常量。 - UnkwnTech
@Scott 很好的观点。@Unknwntech 是的,这不确定。已删除。 - Pekka
限制访问本地计算机,加一分。 - Daniel Vandersluis

5
因为PHP脚本是服务器端的,也就是说它们在服务器上被解析,仅有输出被发送到浏览器,所以你当前的做法非常安全。
唯一可能泄漏你的用户名和密码的方式就是黑客入侵你的服务器并查看源代码,在这种情况下(使用PHP)就无法防止泄露。

5
  1. 请记住,任何能够读取该文件的人都会知道您的SQL密码:请确保它不可被其他人读取。
  2. 不要使用root登录:为每个应用程序创建一个用户。
  3. 不要将“root”作为您的根密码。
  4. 不要向所有人提供您的密码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接