защита config.php

Статус
В этой теме нельзя размещать новые ответы.

tostrss

Мой дом здесь!
Регистрация
16 Окт 2007
Сообщения
768
Реакции
219
Куда бы вы его не переместили, какие бы вы проверки не делали
if(!defined('_SHELL')) die(); //вот она проверка
, чем бы не кодировали ,шифровали, обфусцировали файл конфига.

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

PHP:
<?php
define('_SHELL', 1);
include 'config.php';
print_r(get_defined_constants(true));
?>

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


Если кодировать, то весь скрипт, или какой-нить важный файл..вот конфиг нефиг кодировать..
 

localhost:80

Постоялец
Регистрация
4 Дек 2008
Сообщения
102
Реакции
15
не то и не другое - учеба на будущие :ah:

Если учеба, то делюсь откровением. Весь движок, классы, модули, конфиги размещаю вне зоны прямой видимости из интернета по http в директории выше уровнем. В директории www к которой собственно и идут запросы храню только файлы index.php примерно с таким содержанием
PHP:
<?
$page = new Page();
$page->start();
?>
Подцепление конфига:
в явной форме он нигде не подключается, нет ни include ни require. Есть такая замечательная штука в php как autoprepend, его задача перед началом обработки запроса подключить и отработать заданный стартовый php скрипт, именно в нем и начинают собираться конфиги, подключаются необходимые классы, идет подключение к БД, словом происходит полная инициализация движка. Именно поэтому в папке www хранятся только незамысловатые index.php и ни конфиг, ни другой скрипт из инета по http вызвать невозможно
 

blacks

Местный житель
Регистрация
26 Сен 2008
Сообщения
391
Реакции
24
Очень полезно!
Спасибо.

Только вот я не php'шник :ah:
Может в будущем ;)

Вопрос:
нужно обладать достаночно большими знаниями php чтоб сделать также
как в вашей схеме?
(все вне общ доступа)

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

localhost:80

Постоялец
Регистрация
4 Дек 2008
Сообщения
102
Реакции
15
Очень полезно!
Спасибо.
Только вот я не php'шник :ah:
Может в будущем ;)
Вопрос:
нужно обладать достаночно большими знаниями php чтоб сделать также
как в вашей схеме?
(все вне общ доступа)
Или достаточно взять стандартную смску и все пихнуть на уровень выше и она сама найдет пути - мне слабо верится :/

Если цмс уровня фрейворка, то особых проблем и нет привести к такой схеме, обычно это по умолчанию уже сделано. Если среднестатистическая цмс, то часть ее модулей, конфигов не сложно вынести из www, только в этом случае теряется возможность автоматического апдейта движка, тут уж надо выбирать что нужнее - совместимость или безопасность
 

blacks

Местный житель
Регистрация
26 Сен 2008
Сообщения
391
Реакции
24
Если цмс уровня фрейворка, то особых проблем и нет привести к такой схеме, обычно это по умолчанию уже сделано.
подскажите пожалуйста какие именно фреймворки могут так делать
(несколько имен - для образовательных целей)

Если среднестатистическая цмс, то часть ее модулей, конфигов не сложно вынести из www
тоесть в вордпресе или джумле просто перенести часть на уровень выше?
- придется немного пописать php или просто изменить пути? :ah:
 

Arqin

Профессор
Регистрация
17 Мар 2009
Сообщения
185
Реакции
37
Фреймворки такие как ZendFramework... Kohana/CI вроде тоже выносят... с остальными еще не сталкивался...
 

localhost:80

Постоялец
Регистрация
4 Дек 2008
Сообщения
102
Реакции
15
По списку фреймверков согласен с Arqin.
В вордпрессе и джумле вынести двиг и сменить пути конечно можно, да только вряд ли оно стоит того, прелесть этих цмс в том что плагинов к ним море, в стандартной комплектации они были бы мало кому интересны.
 

antiadmin

Местный житель
Регистрация
24 Май 2008
Сообщения
395
Реакции
24
В качестве маньячных вариантов еще бывают:
1) зазендить конфиг
2) заионкубить
3) многократное base64_encode() (base64_decode()) содержимого
это от стягиваний по фтп, либо через другую багу, короче от стягиваний :D
насчет последнего не согласен, расшифруют

а так, в скрипте, который подключается к конфигу вписывайте
PHP:
define('LOL', true);
а в конфиге
PHP:
if(!defined('LOL')) die ('Hacking attempted');
 

Miraage

Angular/Laravel
Регистрация
3 Июн 2008
Сообщения
231
Реакции
51
я храню данные всякие в файлах типа .config со структурой ini-файла и ставлю на них Deny from all..
PHP:
$this->cfg = parse_ini_file( path/to/.config, true );
 

PapaJoe

Мой дом здесь!
Регистрация
4 Авг 2008
Сообщения
621
Реакции
316
Есть такая замечательная штука в php как autoprepend, его задача перед началом обработки запроса подключить и отработать заданный стартовый php скрипт, именно в нем и начинают собираться конфиги, подключаются необходимые классы, идет подключение к БД
однако если в php-скрипте(после подключения конфиг-файлов с помощью autoprepend) выполнить те же get_defined_constants(true) и get_defined_vars() то все объявленные переменные и константы должны всплыть, разве нет?
Если только там сразу не идет подключение к БД, без объявления переменных логина и пароля к mysql-серверу.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху