То, о чем вы на самом деле говорите, - это контроль доступа к конфиденциальной информации, и лучший способ сделать это - использовать механизмы _access_control_, встроенные в базовую ОС.По моему мнению, вы не можете сделать это эффективно с переменными среды на уровне Apache, поэтому мне трудно думать о каких-либо убедительных преимуществах, которые заставили бы меня поддержать эту опцию.
Вы можете сделать это, используя файл для хранения контента, например, файл config.php
, который имеет соответствующий контроль доступа.Ограничьте область действия этого файла настройкой только этого ограниченного числа параметров, которые должны быть защищены. Например,
<?php
$DBuser = "abd";
$DBpasswd = 'fred:ere12#';
Это может быть скомпрометировано только тем, кто на сервере имеет доступ для чтения к файлу.(Даже если он находится в каталоге, доступном через Интернет, доступ к нему по URI не приведет к раскрытию этой информации. Вы понимаете, почему?)
Поскольку paulsm4 предлагает запутать это шифрованием, никто из случайных пользователей не сможет увидеть его.эти данные. Однако , это не механизм безопасности, так как мы должны предполагать, что любой, кто имеет доступ к файлу config.php, также имеет доступ к скрипту, который читает и декодирует эти параметры, и может просто перестроить эту процедуру.
На самом деле в моих приложениях я использую немного другой подход, который я привожу в качестве примера.Я использую определения (приложения OO OO и не используют глобальные переменные) в небольшом загрузочном файле index.php и храню все остальные данные конфигурации в моем D / B
<?php
define( 'SQL_CONTEXT', 'DB:user:pwd:tableprefix' );
define( 'ROOT_DIR', dirname(__FILE__) );
define( 'START_TIME', microtime() );
// a couple of other app-specific defines go here
if( ( @include( "./_cache/dispatcher.class.php" ) ) != 1 ) {
require("./_include/functions.php");
}
Dispatcher::dispatch();
Это сборка для dev, мойпротестируйте ВМ и выполните установочный скрипт, который имеет некоторые правки для вставки этой конфиденциальной информации в APPROOT / index.php, так что мне не нужно хранить эту конфиденциальную информацию в моем git хранилище.