Одним из элегантных способов является размещение всех ваших файлов, доступ к которым возможен только через include , вне веб-каталога .
Скажите, что ваш веб-каталог - / foo / www /, создайте каталог включения / foo / includes и установите его в своем include_path:
$root = '/foo';
$webroot = $root.'/www'; // in case you need it on day
$lib = $root.'/includes';
// this add your library at the end of the current include_path
set_include_path(get_include_path() . PATH_SEPARATOR . $lib);
Тогда никто не сможет получить доступ к вашим библиотекам напрямую.
Есть много других вещей, которые вы могли бы сделать (проверить, установлена ли глобальная переменная, использовать только классы в библиотеках и т. Д.), Но этот является наиболее безопасным. Каждый файл, который не находится в вашем DocumentRoot, не может быть доступен через URL. Но это не означает, что PHP не может получить доступ к этому файлу (также проверьте свою конфигурацию open_basedir, если она у вас не пустая, чтобы разрешить включение в нее директории включения).
Единственный файл, который вам действительно нужен в вашем веб-каталоге, это то, что мы называем начальной загрузкой (index.php), с хорошим правилом перезаписи или хорошим управлением URL, вы можете ограничить все ваши запросы в приложении этим файлом, это будет быть хорошей отправной точкой для безопасности.