将敏感密钥放在$ _ENV和$ _SERVER中是否安全

时间:2015-08-20 10:47:05

标签: php laravel

Laravel 4.2填充$_ENV$_SERVERLaravel 5.1使用DotEnv填充$_ENV

我实际上正在开发一个非laravel项目,并使用laravel配置包通过composer重构现有应用程序。目前,我们有多个文件存在于高于项目根目录的文件夹中,用于存储敏感信息(因此没有任何内容存储在git中)。所以需要这些敏感键的方法目前看起来像这样:

processStripeCharge(){
   $keys = include '../../keys/stripe.php';
   .... }

我想替换为:

processStripeCharge(){
   $keys = config('stripe');
   .... }    

和config / stripe.php:

<?php return [
      'public' => $_ENV['STRIPE_PUBLIC']
      ... 
    ];

新方式会不会比以前的方式更安全?(我必须回答这位非常注重安全的经理)

优点:

  1. 使用中央配置文件显然是一个非常紧迫的需求。
  2. ...
  3. 缺点:(安全性?)

    1. 如果dev会留下var_dump($_ENV);乱扔垃圾或phpinfo();所有秘密都将保留在公开场合,直到现在还不是这样。
    2. 类似于1),如果黑客将其添加到在站点上下文中运行的文件(因此加载了所有配置),他们将非常容易地获取密钥。目前,通过发现包含当前文件的方法并在那里添加var_dump($keys),他们需要更多工作。
    3. 我个人认为,如果黑客能够访问服务器,我们无论如何都会遇到大麻烦,而且无论如何都可以使用当前系统获取密钥。

      如果仅填充$_ENV而不是$_SERVER,它会更安全吗?

      我想到的妥协就是让config/stripe.php像这样:

         <?php 
          $keys = include '../../keys/stripe.php';
          return [
            'public' => $keys['public']
            ... 
          ]; 
      

      所以我两个世界都是最好的,$_ENV没有填充+使用配置文件

0 个答案:

没有答案