繁体   English   中英

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

[英]Keeping database credentials secure in a PHP application

我正在开发我的第一个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
        }
    }

}

然后,我将包括这个文件,有什么想法吗?

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

我将数据库凭据保存在有意义的位置:在连接到数据库的函数调用中。

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

如果他们拥有终端访问权限,则应更加专注于使其更加困难。 您应该锁定文件,以便只有root才能看到它们。 还禁用外部数据库访问,在防火墙中阻止端口3306,并禁用Mysql网络。 用这个。 我希望这个帮助能祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM