2010-09-14 55 views
21

我想要一些你认为是使用PHP连接到MySQL数据库的最安全的方式。目前我正在做的是一个实用PHP文件,我将其包含在所有其他PHP文件的顶部。实用PHP文件是这样的:用PHP安全地连接到MySQL的最佳方式

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

有什么建议吗?

+15

“安全”是什么意思?抵御什么? – 2010-09-14 15:47:03

+2

你缺少报价:'$ mysql_db =“cokertrading”'(除非它是一个常量)。 'defined('IN_PHP')'check在这里并不是很有用,因为你只定义了变量,而不是立即连接。 – Lekensteyn 2010-09-14 15:51:20

+1

@daniel root/root用于在本地机器上进行测试duh – Tim 2010-09-14 15:51:31

回答

24

建议:您应该永远不要以root身份运行;创建另一个帐户并为其提供您网站所需的“最少”权限。

+0

好的谢谢你的帮助 – Tim 2010-09-14 15:53:13

+10

+ 1为“最低特权”的方法。 – 2010-09-14 16:00:45

+3

+1用于纠正使用分号;根不是一个好主意。 – 2010-09-16 22:28:14

6
  • 定义一对正确的登录凭证而不是“root/root”(将用户名更改为别的,并选择复杂的密码);

  • 如果可能的话,请在防火墙级别限制对数据库的访问权限到localhost,或者如@Scott在注释中所述,将mySQL设置为仅侦听来自127.0.0.1的连接。如果两者都不可行,请限制mySQL级别的访问。 ("username"@"localhost"

+0

防火墙规则并不是一个坏主意,但它们是不必要的。你可以通过改变mysql配置来完成相同的操作,只在127.0.0.1上监听 – 2010-09-14 15:51:33

+0

除非cokertrading在文件的其他地方定义为常量。 – UnkwnTech 2010-09-14 15:52:01

+0

@Scott好点。 @Unknwntech烨,这是不确定的。删除。 – 2010-09-14 15:52:22

4

因为PHP脚本是服务器端 - 即它们被解析的服务器上,仅输出发送到浏览器 - 你正在做的,这是完全安全的方式。

人们能够获得您的用户名和密码的唯一方法是实际入侵您的服务器并查看源代码 - 在这种情况下,无法(以PHP方式)防范此问题。

5
  1. 请记住,任何能够读取该文件的人都会知道您的SQL密码:将其设置为不可读取。
  2. 不要以root身份登录:为每个应用程序创建一个用户。
  3. 请勿使用“root”作为您的root密码。
  4. 不要把密码给大家。
8

我相信没有人提到MYSQLIprepared statements然而,您可能会锁定您的密码和数据库连接之间的距离,但是那如果我可以简单地输入登录表单';DROP TABLE users;--最终是徒劳的。

检查http://en.wikipedia.org/wiki/SQL_injection了解我在说什么。

+1

谢谢你。我需要做更多关于sql注入的阅读。 – Tim 2010-09-14 17:20:49

相关问题