Я пытаюсь установить некоторую базовую безопасность, чтобы другие пользователи на общем хостинге не могли включать сценарии, которые не принадлежат им. Я придумал ниже и немного изменил его, чтобы он также работал на Windows, которая работала (как с Windows, так и с Mac), пока я не загрузил ее с локального на веб-сервер.Подтверждение запроса корневого пути является локальным
define("ROOTPATH", str_replace("_scripts/php/", "", str_replace("admin/_scripts/php/", "", str_replace("\\", "/", realpath(dirname(__FILE__)) . "/"))));
if(!strstr(ROOTPATH, str_replace("admin/_scripts/php/", "", str_replace("\\", "/", realpath($_SERVER['DOCUMENT_ROOT']))))){
die("Server path check failed");
}
Кажется, мой хозяин имеет DOCUMENT_ROOT
, отличающийся realpath(dirname(__FILE__))
, который я не знал, был возможно до сих пор - есть способ улучшения выше, так что проверка еще правильно в то время как учет хостов, которые имеют разные корни документа как хранятся файлы?
На данный момент определенный ROOTPATH равен /home/USERNAME/htdocs/
, хотя проверка выдается как /home/SOMETHINGELSE/htdocs/
, поэтому мой чек в основном не работает - я точно не хочу, чтобы я терпел неудачу с моей собственной проверкой lol!
Minor Update
Я знаю, что всегда можно использовать define('checkme', 'abc123');
, который я использую, как хорошо - я просто хочу, чтобы иметь другую проверку поставить на место, чтобы убедиться, что он исходит из своего хостинг-пакет, а не кто-то elses на сервере ... если вы понимаете, что я имею в виду.
В идеале я хотел бы, чтобы работать на любом сервере с любым хостом, по крайней мере, план ...
Если другие пользователи вашего общего хоста * могут * включать эти файлы, вы должны переключать хосты. – hakre
Ну да, но лучше предотвратить это, чем надеяться, что кто-то не найдет какой-либо эксплойт (на сервере или через мой скрипт) – MrJ
Если вы пытаетесь запретить другим читать ваши скрипты, они могут просто использовать file_get_contents() и читать файл таким образом. –