如何使用PHP include来构建一个安全的环境


How to use PHP include to build a secure environment?

我认为这是一个简单的问题,但我希望对这个问题有一个正确的认识。

我使用AmazonLinuxAMI在Amazon上创建了一个EC2实例。然后我按照上面的说明安装了Apache和php55http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html.我还根据同一指南设置了/var/www目录的权限。

[ec2-user ~]$ sudo groupadd www
[ec2-user ~]$ sudo usermod -a -G www ec2-user
[ec2-user ~]$ sudo chown -R root:www /var/www
[ec2-user ~]$ sudo chmod 2775 /var/www
[ec2-user ~]$ find /var/www -type d -exec sudo chmod 2775 {} +
[ec2-user ~]$ find /var/www -type f -exec sudo chmod 0664 {} +

让我们考虑一下这个场景。这只是为了测试目的,然后我们将实现真正的应用程序:

  • 我有一个PHP web应用程序,它有一个配置文件config.PHP,我们在其中存储了一些重要的应用程序安全信息,比如数据库凭据、登录条件
  • 为了保护它,我将config.php放在/var/set到755下的"/mateotest"目录中;我在文档根目录外创建了/mateotest以提高安全性
  • 在一些文件中,我包含了config.php
  • config.php实际上设置为404,因此只有在需要更改的情况下,我才会升级到604,然后我会再次降级到404

这里我做了什么详细:

在文档根目录中,我创建了2个文件。两个文件都具有664权限;所有者=ec2用户和组=www

index.php

<?php
/**
 * Created by PhpStorm.
 * User: matteolatitude
 * Date: 26/03/15
 * Time: 1.12
 */
include($_SERVER["DOCUMENT_ROOT"].'/global.php');
include(PHP_FILES_PATH.'config.php');
echo '</br>';
for ($i = 1; $i <= 10; $i++) {
    echo $i;
}
echo('Calculated result: '.$somma.'</br>');

global.php

<?php
/**
 * Created by PhpStorm.
 * User: matteolatitude
 * Date: 26/03/15
 * Time: 12.36
 */
define('PHP_FILES_PATH', '/var/matteotest/');

然后,我创建了/var/matteost-dir,owner=root,group=root,权限为755。

然后在/var/matteotest中,我保存了config.php;这个文件只是一个测试;在实际应用程序中,我将使用它来存储例如数据库连接数据。所有者=根,组=根

config.php

<?php
/**
 * Created by PhpStorm.
 * User: matteolatitude
 * Date: 26/03/15
 * Time: 1.15
 */
// vediamo se esegue anche questo script
for ($k = 1; $k <= 4; $k++) {
    $somma .= $k*2;
}

我想了解

  1. include($_SERVER["DOCUMENT_ROOT"].'/global.php')似乎是一个好的、安全的选择吗?有没有更好、更安全的方法?

  2. 我的权限(以及所有者和组)是一个不错的选择,还是你会用不同的方式?

1) Is include($_SERVER["DOCUMENT_ROOT"].'/global.php")似乎是好而安全的选择?有没有更好、更安全的方法?

当从根目录中包含时,我更喜欢include dirname(__FILE__) .'/global.php';。有时我使用__FILE__将根路径定义为常量。

相关文章: