При взломе сайта с целью заработка или распространения вредоносного программного обеспечения в файлах скриптов и шаблонов размещается вредоносный код, такой как вирусные вставки, хакерские шеллы, бэкдоры и т.п. Хакеры модифицируют файлы скриптов, шаблонов и настроек, а владельцы сайта, как умеют, пытаются свой сайт защитить. Например, запретить запись в те файлы, в которые хакеры добавляют вредоносный код, делая их “только для чтения”. Особенно сообразительные администраторы и веб-мастера меняют у файла владельца на root, что уж точно должно гарантировать защиту от изменения. Но спустя некоторое время обнаруживают, что в файле снова добавлен вредоносный код, при этом у файла сохранилась дата, время и атрибуты “только для чтения”. То есть случилась магия.
Очень часто подобная картина наблюдается у файлов .htaccess и индексных (index.php, index.html). В действительности никакой магии нет. Просто есть масса способов изменять содержимое read-only файла и одна только смена атрибутов на 400 или 444 не дает нужного эффекта. Рассмотрим варианты изменения read-only файла всеми доступными на хостинге средствами, включая php скрипты:
Гарантированно защитить read-only файл от изменений можно лишь при соблюдении следующих условий (всех до одного):
Если хотя бы один пункт не выполнен, гарантировать защиту файла от модификаций нельзя.
Кстати, под Linux можно использовать расширенные атрибуты, установив на файл "readonly" командой chattr +i file.txt
Данный подход защиты файлов от модификаций используется в процедуре cms hardening ("цементирование сайта"), которую мы выполняем при установке защиты.