美文网首页
PHP 新手入门指南 - 隐藏敏感信息

PHP 新手入门指南 - 隐藏敏感信息

作者: chansey | 来源:发表于2017-06-22 12:10 被阅读158次

我们编写的程序中,有时会涉及到连接数据库或一些账户以及口令等敏感信息,如果直接在程序中通过硬编码将会不安全也不容易维护,比如:

<?php

class Connection
{
    public static function make() 
    {
        try {
            return new PDO('mysql:host=127.0.0.1;dbname=mytodo', 'root', '');
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    }
}

如果这些信息控制不善容易造成信息泄漏,同时也难以维护管理。为此我们可以调整思路,让这些运行参数变得灵活可配置,从而到在编码时不直接暴露敏感信息,比如通过集中配置的方式来实现。

小实践

在之前系列的项目代码基础上。我们新增 config.php 文件:

// config.php
<?php

return [
    'database' => [
        'name' => 'mytodo',
        'username' => 'root',
        'password' => '',
        'connection' => 'mysql:host=127.0.0.1',
        'options' => [
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
        ]
    ]
];

这里设置 PDO::ATTR_ERRMODE 表示要返回错误报告。
更多可以参考手册 PDO::setAttribute

我们将数据库需要用到的相关信息抽取出来集中到了 config.php 中,这很方便我们之后集中管理这些会变动的信息。

接下来我们将 database/Connection.php 文件内容更改为:

// database/Connection.php
<?php

class Connection
{
    public static function make($config) 
    {
        try {
            return new PDO(
                $config['connection'].';dbname='.$config['name'],
                $config['username'],
                $config['password'],
                $config['options']
            );
        } catch (PDOException $e) {
            die($e->getMessage());
        }
    }
}

在我们之前的 bootstrap.php 中,内容修改后如下:

<?php

$config = require 'config.php';

require 'database/Connection.php';
require 'database/QueryBuilder.php';

return new QueryBuilder(
    Connection::make($config['database'])
);

这样我们引入了配置文件 config.php 让它能为数据库连接进行灵活的配置,只要我们控制好 config.php 的私密性(这里暂不展开具体讨论),我们就已避免从硬编码的角度暴露敏感信息。

相关文章

  • PHP 新手入门指南 - 隐藏敏感信息

    我们编写的程序中,有时会涉及到连接数据库或一些账户以及口令等敏感信息,如果直接在程序中通过硬编码将会不安全也不容易...

  • PHP 新手入门指南 - PHP 框架

    对于 Web 开发者来说,PHP 是一款非常强大而又受欢迎的编程语言。世界上很多顶级的网站都是基于 PHP 开发的...

  • PHP 新手入门指南 - 类

    类是面向对象程序设计的基本概念,通俗的理解类就是对现实中某一个种类的东西的抽象, 比如汽车可以抽象为一个类,汽车拥...

  • PHP 新手入门指南 - MySQL

    数据库 数据库是一种用于存储数据集合的独立应用程序。每种数据库都会有一个或多个独特的 API,用来创建、访问、管理...

  • PHP 新手入门指南 - Composer

    我们在 PHP 项目中通常会引入很多类文件,而程序运行的时候则依赖它们,如果依赖内容很多管理起来就会很麻烦,有没有...

  • PHP 新手入门指南 - 变量

    PHP 中的变量用一个美元符号后面跟变量名来表示。变量名是区分大小写的。 变量名与 PHP 中其它的标签一样遵循相...

  • PHP 新手入门指南 - 函数

    PHP 的真正力量来自它的函数:它拥有超过 1000 个内建的函数。 内建函数 比如:htmlspecialcha...

  • PHP 新手入门指南 - PHP & HTML

    让我们来了解一下 PHP 和 HTML 是如何一起愉快的玩耍的。 小实践 在工作目录下新建一个 index.php...

  • PHP 新手入门指南 - 安装 PHP 环境

    环境搭建有多种方案,对于新手而言,可以先从集成环境开始入手,后续可以再去了解如何通过编译的方式搭建 PHP 环境。...

  • PHP 新手入门指南 - 介绍 PDO

    PHP 数据对象 (PDO) 扩展为PHP访问数据库定义了一个轻量级的一致接口。实现 PDO 接口的每个数据库驱动...

网友评论

      本文标题:PHP 新手入门指南 - 隐藏敏感信息

      本文链接:https://www.haomeiwen.com/subject/yfttcxtx.html