Простой антивирус на сайт
Строго говоря, заголовок не совсем корректен – это по сути не антивирус, а система оповещения. Но ничего же не мешает потом прикрутить, скажем, восстановление файлов, не правда ли?
Для начала немного теории. Каким-то образом зловред залез на ваш сайт и начал там распоряжаться – подсовывать посетителю другие ссылки, качать базу или копировать пароли. Для того, чтобы взаимодействовать с посетителем, вирусу надо изменить некоторые файлы. Чаще всего это index.php, .htaccess и конфигурационные файлы. Именно отслеживанием изменения этих файлов мы и займемся.
Все манипуляции будем производить с index.php – думаю, расширить на другие файлы код вам будет несложно – он легко масштабируем. Сначала получаем абсолютный путь к нему от корня сервера:
$filename = $_SERVER['DOCUMENT_ROOT'].'/index.php';Так как в кроне такие вещи как $_SERVER["DOCUMENT_ROOT"] недоступны, то полученное значение запишите и затем переопределите $filename = "/hosting/users/абсолютный путь/cron.php".
Теперь определяем две даты:
$datetime1 = '16-09-2017 14:08:12'; $datetime2 = strval(date ("d-m-Y H:i:s", filemtime($filename)));Первая – это время, когда последний раз изменялсz файл на сервере легально (это делали вы), а вторая – фактически; когда вообще изменялся. Обращаю ваше внимание, что применяем функцию strval() – чтобы дата стала строкой. Зачем? – спросите вы. И будете правы: конечно, в PHP есть функции сравнения дат (diff()), но, дело в том, что они работают от версии 5.3 и выше, а нам требуется универсальное решение.
Теперь составляем сообщение:
$mail_to = 'ваша почта'; $subject = 'тема письма'; $body_message = ' сообщение‘; $headers = 'Content-type:text/html; charset = utf-8'."\r\n";А теперь условие. Если не выполняется, то отправляем письмо:
if ($datetime1!=$datetime2) $mail_status = mail($mail_to, $subject, $body_message, $headers);Но это еще не все. Надо теперь заставить этот скрипт выполняться, к примеру, раз в час. К счастью, у всех хостеров есть планировщик задач (cron), так что и эта задача решаема. У разных хостингов команда отличается в частностях, но в целом синтаксис такой:
/usr/bin/php5 /hosting/users/абсолютный путь/cron.php /dev/null &2>&1
Ну а если вы чего-то не поняли, вам требуется недорого вылечить сайт от вируса или закрыть дыры в нем, то вы всегда можете обратиться ко мне: вам будет оказана быстрая и квалифицированная помощь. Я могу решить практическую проблему с вашим сайтом, сделать его недоступным для большинства хакеров.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.