在PHP中存储敏感数据

Lio*_*ana 2 php

我正在研究一个PHP项目,我正在使用一个全局设置文件,其中包含我需要一些全局值,例如用于连接到mysql的数据库凭据.例如:

settings.php配置:

<?php          
    const DB_ADDRESS = 'localhost';
    const DB_USERNAME = 'johndoe';
    const DB_PASSWORD = 'mypassword';
    const DB_PORT = 7777;   
?>
Run Code Online (Sandbox Code Playgroud)

我的问题,它足够安全吗?例如,在explorer/chrome中调试时有没有办法查看变量值?有没有其他更安全的方式?

谢谢.

Joh*_*nde 6

PHP信息在发送到浏览器之前在服务器上处理,因此在正常情况下无法在浏览器中看到它.但是,如果您的网络服务器配置错误,您的代码的纯文本版本可能会被发送到浏览器,从而使用户可以看到它.这就是重要代码应始终保留在文档根目录之外并在需要时包含在文件中的原因.


rba*_*r86 5

虽然这在服务器受损的情况下提供的保护很少,但如果您的源代码通过错误或其他漏洞(例如:http ://www.php.net/archive/2012.php#id2012)公开可见-05-06-1 ) 越来越常见的方法是将各种凭据和参数设置为服务器环境变量。

例如,在 apache vhost/.htaccess 中,您可以设置如下环境变量:

SetEnv DB_ADDRESS localhost
...
Run Code Online (Sandbox Code Playgroud)

在你的 PHP 代码中:

$DB_ADDRESS = getenv('DB_ADDRESS');
Run Code Online (Sandbox Code Playgroud)

当然,您可以将此值分配给类常量、全局常量,具体取决于您的用例等......

这也使您的源代码更具可移植性,允许根据托管环境(登台/生产等)提供不同的配置:

SetEnv APPLICATION_ENV 开发 - .htaccess 与 Zend 框架交互?

您的设置永远不会被硬编码,也无法在源代码中访问。Heroku 使用类似的方法来配置应用程序。