Какие стандартные решения позволяют защитить скрипты от злоумышленного изменения или моментально обнаружить факт изменения скриптов?
freeneutron где-нибудь хранишь мд5 хеш всех файлов, в начало каждого файла вставляешь проверку мд5-хеша себя же. либо хранить время последнего изменения файла и вначале каждого файла сравнивать его. первый способ надёжнее, но медленнее второй способ быстрее и легче, но возможны трудности
Gromo Спасибо за предложение. Я бы добавил функцию контроля хэшей в автолоадер. Но почему-то мне кажется, что эта проблема не нова и где-то есть готовое решение в виде библиотеки
Кстати, функция контроля хэшей должна хранится в закодированном виде. Иначе, злоумышленник, получивший доступ к файловой системе сервера, легко сможет ее сломать. Наверно лучшим решением будет, когда данный функционал размещен в подключаемом PHP-расширении.
freeneutron если делать через единую точку входа (то бишь через роутер) то достаточно вручную в роутер вставить проверку подключаемых файлов на изменение (мд5 хеш, дата модификации или любую другую) и запретить модифицирование самого файла роутера, вот и будет тебе щастье
Думаю, надежнее будет хранить скрипты в базе с доступом "только чтение", хотя это не поможет, если злоумышленник знает пароль к полному доступу.
давно тоже руки чешутся такую фиговину сделать, но лень поискать, может уже сделал кто такое. точнее, я не знаю, как правильно сформулировать поисковый запрос)) моя идея в следующем. php-скрипт запускается по крону, например, раз в 5 минут, сканирует дерево проекта, воспроизводит структуру дерева, например, в массиве в виде {filename:md5}, сериализует, сохраняет где-нить в укромном месте. в след. раз когда он запускается, сначала десериализует дерево из файла, потом начнет сканировать директорию и сравнивать файлы. если размер у файла сменился, или хэш, или файл вообще новый, скрипт будет сигнализировать, например по емэйлу админа. можно предусмтореть запуск скрипта с параметром принудительной переиндексации, чтобы можно было добавлять файлы в проект. конечно, если злоумышленник получит root-права, этот механизм не сработает. только для начала нужно догадаться посмотреть в crontab, найти там этот скрипт, который будет называться как-нить отвлеченно, например, clean_up_db.php, проанализировать его, и вырубить из крона.
если паранойя совсем покоя не дает, то можно написать юникс-демона аналог крона специально для этой проверялки, закосить его под системный процесс. тогда хацкеру вообще будет крайне сложно его отыскать.
Думаю, все это должно быть у Оракла. Возможно, поизучав их продукты, можно будет и запрос сформулировать