защита config.php

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

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

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

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


Если кодировать, то весь скрипт, или какой-нить важный файл..вот конфиг нефиг кодировать..
 
не то и не другое - учеба на будущие :ah:

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

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

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

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

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

Если среднестатистическая цмс, то часть ее модулей, конфигов не сложно вынести из www
тоесть в вордпресе или джумле просто перенести часть на уровень выше?
- придется немного пописать php или просто изменить пути? :ah:
 
Фреймворки такие как ZendFramework... Kohana/CI вроде тоже выносят... с остальными еще не сталкивался...
 
По списку фреймверков согласен с Arqin.
В вордпрессе и джумле вынести двиг и сменить пути конечно можно, да только вряд ли оно стоит того, прелесть этих цмс в том что плагинов к ним море, в стандартной комплектации они были бы мало кому интересны.
 
В качестве маньячных вариантов еще бывают:
1) зазендить конфиг
2) заионкубить
3) многократное base64_encode() (base64_decode()) содержимого
это от стягиваний по фтп, либо через другую багу, короче от стягиваний :D
насчет последнего не согласен, расшифруют

а так, в скрипте, который подключается к конфигу вписывайте
PHP:
define('LOL', true);
а в конфиге
PHP:
if(!defined('LOL')) die ('Hacking attempted');
 
я храню данные всякие в файлах типа .config со структурой ini-файла и ставлю на них Deny from all..
PHP:
$this->cfg = parse_ini_file( path/to/.config, true );
 
Есть такая замечательная штука в php как autoprepend, его задача перед началом обработки запроса подключить и отработать заданный стартовый php скрипт, именно в нем и начинают собираться конфиги, подключаются необходимые классы, идет подключение к БД
однако если в php-скрипте(после подключения конфиг-файлов с помощью autoprepend) выполнить те же get_defined_constants(true) и get_defined_vars() то все объявленные переменные и константы должны всплыть, разве нет?
Если только там сразу не идет подключение к БД, без объявления переменных логина и пароля к mysql-серверу.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху