MySQL凭据/主机变量最佳实践

25

我想知道在创建用于MySQL凭据/主机的变量时,最佳实践是什么或建议采取哪些措施。

    define('HOST', 'localhost');
    // etc..
   mysql_connect(HOST, // etc...

VS

    $host = 'localhost';
    // etc..
   mysql_connect($host, // etc...

对于两种方式,您可以轻松检查已声明的变量或常量,并且可能可以轻松找到值。我有多个用户可以共享和使用的代码。

如何最好地保护这些变量?

2个回答

31

以下是几种解决方案:

1) 为每个用户提供用户名和密码,并在数据库中设置每个用户的权限(仅限选择、插入等)。因此,在您的代码中,您只需包含一个db.config.php文件,以便设置所有变量。重要的是,即使用户输出这些变量,也未关系,因为他们使用自己的变量。

2) 您可以为数据库提供一个公共的用户名/密码,然后对文件进行编码(可以使用自定义编码、zend optimizer或ioncube),并取消设置变量。下面是示例代码:

// file mysql_connect.php

$link = mysql_connect("localhost", "mysql_user", "mysql_password")
    or die("cannot connect to database : " . mysql_error());

// then this file is encoded so nobody can view it.

3) 在某个时候,有人会以某种方式找到这些信息。我建议你只需相信你的用户(假设他们是开发人员)。


第二个似乎对我需要做的事情来说有点贵,第三个嘛,还没有;)但我喜欢第一个,非常简单和整洁。 - Pat R Ellery

1
在编程过程中,你可能需要硬编码这种信息,但是重要的是将其保留在一个地方以促进可维护性。 然而,由于你担心安全问题,我建议你检查一下这个链接:将PHP文件转换为二进制

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