Простой антивирус на сайт


Строго говоря, заголовок не совсем корректен – это по сути не антивирус, а система оповещения. Но ничего же не мешает потом прикрутить, скажем, восстановление файлов, не правда ли?

Для начала немного теории. Каким-то образом зловред залез на ваш сайт и начал там распоряжаться – подсовывать посетителю другие ссылки, качать базу или копировать пароли. Для того, чтобы взаимодействовать с посетителем, вирусу надо изменить некоторые файлы. Чаще всего это 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, информационная безопасность, сайтостроение




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Пара слов о серии "Плоский мир"
C++: String в string и нахождение позиции символа
Как научиться Java