На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

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



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

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





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


Заметки на полях по администрированию
Домены, apache и https


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.