Храните настройки портала в недоступном от юзверя месте

dr Tr0jan

Guest
Храните настройки портала в недоступном от юзверя месте

Хотелось бы узнать, где и как лучше всего хранить настройки портала (логин/пароль к базам и т.д.)?
Если хранить в скрипте, то доступ можно получить, через
PHP:
include ('http://site/config.php');
Если хранить в обычном файле, то доступ к нему открыт по дефаулту. Можно конечно, через .htaccess, но все-таки хотелось бы узнать Ваше мнение.
По ходу еще вопросик, как читать файл *.cfg? Я решил так
PHP:
$expr="^ *([[:alnum:]_.]+) *= *([^ \t\n\r#]*)[[:print:]]*";

$config_file=fopen('config.cfg', 'rt')
  or die ('Could not to open config file!');
while(!feof($config_file)){
  $line=fgets($config_file);
  if (ereg($expr, $line, $pocket)!=0)
      $CONFIG[$pocket[1]]=$pocket[2];
}
Чтение осуществляется в массив $CONFIG. Может есть другие способы?

Подскажите плиззз.

===========
PHP 4.3.4 (register_globals = Off)
Apache 2.0.48
Win XP
 

neko

tеam neko
самый простой на свете способ это положить конфиг в директорию через веб недоступную.

например в директорию с .htaccess, который отказывает всем.
либо в директорию которая в принципе недоступна, т.к. живет за пределами DocumentRoot

сам конфиг (в самом простом на свете способе) представляет из себя php-скрипт в котором задаются значения настроечных переменных (любители порядка могут их все запихать в один массив или вообще подефайнить).

конфиг инклюдишь и все.
 

magic

lancer
include ('http://site/config.php') отдаст тебе результат работы скрипта, а не значение переменных.
 

dr Tr0jan

Guest
Тут сразу напрашиваются два аргумента "против":
1) Допустим у нас есть файл config.php:
PHP:
<?php
  $login="admin";
  $pass="pass";
?>
и хакер Вова, у которого есть файл xak.php, на каком либо сервере:
PHP:
<?php
  include ("http://site.ru/config.php");
  echo "Login: $login<BR>Pass: $pass";
?>
И наш конфиг у Вовы на ладони.
А если защитить config.php через .htaccess, то можно будет получить к нему доступ вышеописанным способом?

2) Дело в том, что конфиг, мне надо не только читать, но и записывать в него. Если бы все было так просто, можно было вообще
PHP:
parse_ini_file();
использовать.
 

neko

tеam neko
уважаемый доктор
ты читать умеешь
если да -- то читай.

и инклюдить так никто тебе не советовал кстати
инклюдишь по локальному пути без всяких враперов

-~{}~ 10.07.04 06:27:

я понимаю откуда берутся люди которые что-то незнают и делают неправильно.
я непонимаю откуда берутся люди которые вроде и все знают
но нет, городят огород

пораскинь
твой конфиг через веб при такой схеме
вообще не будет доступен

ну а если и будет он доступен.
как и другой php скрипт
какая тут польза хакеру?

ты понимаешь вообще как веб сервер работает?

-~{}~ 10.07.04 06:30:

настоятельно рекомендую попробовать на практике тот бред что ты написал про хакера вову
для наступления скорейшего выздоровления
 

dr Tr0jan

Guest
> ты понимаешь вообще как веб сервер работает?
Звиняй, тупанул! Вчера же книжку читал: функция include() реализует удаленный коннект по web-интерфейсу, а не напрямую.

> для наступления скорейшего выздоровления
вроде уже выздоровел

Вопросик: а как в этот конфиг значения записывать, читать то лекго (через инклюд понятно), а вот сохрагять, с этим уже траблы.
Писать как в обычный файл или как?
 

neko

tеam neko
а какие препятствия?
php файл, это, слава Аллаху, обычный текстовый файл.

если у тебя настройки в массиве, например, лежат можешь вообще сделать serialize() и сохранить результат

но тогда получается что его надо прятать как было сказано выше.
проблемы тут впрочем никакой нет.

-~{}~ 10.07.04 07:56:

и вообще это вопрос логики.
конфиг не предназначен для выдачи вебсервером пользователям
и следовательно в докруте ему делать нечего.
 

dr Tr0jan

Guest
Не, я просто хочу в админовке этот конфиг изменять.
 

neko

tеam neko
и какие проблемы
изменяешь переменные настроечные
потом их сохраняешь

если все делается через админку, а все переменные хранятся в массиве, сериализуешь его и пишешь в файл
 
Сверху