在config.php中包含函数代码的安全性问题是什么

在config.php中包含函数代码的安全性问题是什么,php,security,config,Php,Security,Config,我的开发人员通过config.php文件中的两个函数将代码交付给客户机 客户表示这是一个安全风险,作为一个非php的人,他想知道是否有人知道这是为什么 config.php中存在哪些安全漏洞 代码: 如果配置值存储在可扩展类中的变量中,可以想象,它们可以从代码中实例化该类的任何其他地方被覆盖。这可能被归类为安全问题,具体取决于您管理或公开代码的方式 下面是更多内容,让您了解如何可以重写变量: 将机密放入文档根目录中的文件被认为是一种不好的做法,因为如果服务器配置错误,将.php作为普通文件提供,

我的开发人员通过
config.php
文件中的两个函数将代码交付给客户机

客户表示这是一个安全风险,作为一个非
php
的人,他想知道是否有人知道这是为什么

config.php
中存在哪些安全漏洞

代码:


如果配置值存储在可扩展类中的变量中,可以想象,它们可以从代码中实例化该类的任何其他地方被覆盖。这可能被归类为安全问题,具体取决于您管理或公开代码的方式

下面是更多内容,让您了解如何可以重写变量:

将机密放入文档根目录中的文件被认为是一种不好的做法,因为如果服务器配置错误,将.php作为普通文件提供,或者如果打印了stacktrace,包括有问题的行,那么您就泄露了机密。(这种情况比您想象的要多,尤其是在服务器移动和维护方面。)

此外,将机密和实际活动代码混合在同一个文件(如上所述)中会使管理代码和部署变得困难,最终可能会将密码检查到源代码存储库中,这不是一件好事


通常的建议是将数据库凭据和API密钥等机密保存在web服务器文档根目录外的静态仅配置文件中,并在需要时从PHP读入。

“config.PHP文件”?您可能需要更具体一点。Hi deceze是一个小型php应用程序的配置文件,用于存储数据库信息和s3信息对不起,请尽早输入:我已经将代码复制到问题中,但是您描述的“两个函数”在哪里?你是指定义的吗?到目前为止,我没有看到任何让我担心的事情,安全性方面。函数上传3($FilePath,$name=”“){$FilePath=str_replace(“);$info_path2=explode(“/”,$FilePath);if(count($info_path2)>1){$Bucket=$info_path2[0];$Object_info=str_replace($Bucket./”,“,”“,$FilePath);如果(!class_存在('S3'))需要一次('S3.php'));//实例化类$s3=news3(awsAccessKey,awsSecretKey);$s3>putBucket($Bucket,s3::ACL_PRIVATE);if($s3>getObject($Bucket,$Object_info,$name)){return true;}否则{return false;}return false;}
<?php 
    //$config["ALLOWED_IPS"] = Array("rrrr,tttt,uuuu"); 
    $config["PRIVATE_KEY"] = "sssss"; 
    $config["PUBLIC_KEY"] = "aaaaa"; 
    $config["DB_HOST"] = "wwwww"; 
    $config["DB_NAME"] = "334455ffff"; 
    $config["DB_USER"] = "uuuu"; 
    $config["DB_PASS"] = "uuuu"; 
    //AWS access info 
    if (!defined('awsAccessKey')) define('awsAccessKey', 'xxxxx'); 
    if (!defined('awsSecretKey')) define('awsSecretKey', 'yyyyy'); 

function uploadS3($FilePath,$name=""){
  $FilePath = str_replace("https://s3.amazonaws.com/","",$FilePath); 
  $info_path2 = explode("/",$FilePath);
  if (count($info_path2)>1){
    $Bucket = $info_path2[0];
    $Object_info = str_replace($Bucket."/","",$FilePath);

    if (!class_exists('S3')) require_once('S3.php');
    //instantiate the class
    $s3 = new S3(awsAccessKey, awsSecretKey);
    $s3>putBucket($Bucket, S3::ACL_PRIVATE);

    if ($s3>getObject($Bucket, $Object_info, $name)) {
      return true;
    }else{
      return false;
    }

  }
  return false;
}
?>