SQL connect.php安全风险?

时间:2013-09-04 22:57:07

标签: php sql security

我只是编写一个PHP文件连接到我的SQL服务器以获取网站登录系统,我很害怕我只是要留下大量安全漏洞。

我将connect.php文件放在网站根目录的目录中,其中包含:

$db = new mysqli('localhost', 'publicguest', '**********', 'website');

密码是打开的。我知道当有人看到网站时,他们无法通过源代码看到PHP代码,但是这种不安全的方法是什么?避免这种情况的常见方法是什么?

6 个答案:

答案 0 :(得分:3)

如果你的服务器有配置问题,特别是没有执行php脚本,那么有人可能会获得该信息 为避免这种情况,您可以将文件放在文档根目录之上。

答案 1 :(得分:3)

除非他们可以直接访问您正在使用的文件,否则应该没问题。

最常见的是,人们会将密码和设置存储在根级别以上的配置文件中,然后在这些语句中解析并使用这些文件。然后由攻击者来到达该文件。

如果您真的想要隐瞒它,您也可以加密这些设置。

答案 2 :(得分:1)

除非攻击者具有FTP /直接访问文件,否则这不会带来安全风险,因为PHP文件在输出到客户端之前已经过处理。

如果攻击者有FTP /直接访问权限,则mysql身份验证信息是最少的问题!

Wordpress在wp-config.php中以明文形式存储mysql登录信息,joomla也是如此,我认为没有别的方法可以做到。

答案 3 :(得分:1)

对于一个好的做法,您不应该在应用程序的源代码中使用您的密码,而是将其存储在Web根目录之外的db_config.php文件中,以确保您的配置文件不可公开访问。

这可以让你更深入地了解这个论点: http://www.mediawiki.org/wiki/Manual:Securing_database_passwords

答案 4 :(得分:0)

在大多数情况下是安全的,除非:

由于某种原因,您的Web服务器以纯文本形式吐出您的代码,这种情况很少发生在服务器配置错误的情况下。

您可以将您的连接数据存储在Web根目录之外以停止一般访问,但是如果允许黑客出于任何原因在您的服务器上执行PHP,那么无论如何都是游戏。

答案 5 :(得分:0)

关于该行代码,我唯一要改变的是从该特定行获取用户名和密码,例如:

$host = 'localhost';
$user = 'publicguest';
$pass = 'hunter2';
$database = 'website';

$db = new mysqli($host, $user, $pass, $database);

原因是,在某些时候,如果您的代码遇到错误并吐出堆栈跟踪,它也不会意外地吐出您的连接信息。

如果真的想成为偏执狂,你可以致电:

unset($user);
unset($pass);

连接完成后,但这实际上只能保护您免受代码注入,只要您永远不会使用eval() ,您应该没问题。 [严肃地说,从不。 >:I]

这个帖子中人们所提出的任何进一步说法都是偏执狂,因为一旦有人对你的代码进行文件级访问,他们就会拥有你王国的钥匙而且游戏结束了。但请记住! 99次100无人关心你的代码或数据库,他们只想注入自己的代码来发送垃圾邮件和/或DOS其他人。 :P