在PHP应用程序中保持数据库凭据安全

时间:2014-04-02 23:17:28

标签: php mysql

我正在开发我的第一个PHP应用程序。现在,我将数据库连接详细信息保存在我的根文件夹之外的配置文件中的常量中,因为我读到这是阻止人们获取数据库凭据的最安全方法。

如果我将该文件包含到我的PHP应用程序中,那么这些常量现在在我的代码中到处都可见并且这不是一件坏事吗?我个人想要克服这个问题只是创建一个数据库类,也将它存储在根目录之外,然后将我的凭据放在私有参数中。所以它会是这样的:

class Db {

    private $host = 'host';
    private $dbname = 'dbname';
    private $username = 'username';
    private $password = 'password';

    private $connection;

    public function __construct() {
        $this->open_connection();
    }

    private function open_connection() {
        try {
            $this->connection = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->dbname, $this->username, $this->password);
        } catch (PDOException $ex) {
            // handle exception
        }
    }

}

然后我会包含这个文件而不是任何想法?

2 个答案:

答案 0 :(得分:2)

如果有人可以访问您的PHP源文件,那么您遇到的问题比找到的数据库登录要大。只是说。

我将数据库凭据保存在一个有意义的地方:在连接数据库的函数调用中。

答案 1 :(得分:0)

这会增加一些安全性,但我不确定它是否完全值得。将配置文件保留在根目录之外的原因是为了防止客户端调用Web上的凭据。只要用户无法执行他们自己的PHP,它就应该是第一种方法是安全的,他们不应该这样做。

如果他们有终端访问权限,你应该更专注于让它变得更加困难。您应该锁定文件,以便只有root才能看到它们。同时禁用外部数据库访问,阻止防火墙中的端口3306并禁用Mysql网络。 Use this.我希望这会有所帮助,祝你好运。