|
Не секрет, что иногда сайты заражают вирусом.
Чем-чем? Вирусом. Он находится в iframe, и таким образом не виден посетителю. Но при этом посетитель успешно этот фрейм открывает и вирус хватает.
Как-как? Обычно внизу файла index.php располагается код, что-то вроде <iframe…>. При этом владелец сайта однозначно может сказать, что «ээ, дарагой, такова ранэшэ нэбэло, ээ!»
Как избавиться? Удалить этот код, сменить пароли на FTP (т.к. часто именно их и воруют).
В чем подвох? Подвох в том, что владелец сайта может «до последнего» не видеть вирус. Особенно, если вирус какой-нибудь новый. И даже Касперский не поможет.
В чем заключается моя «защита» и почему она «китайская»? Дело в том, что это скорее не защита, а оповестительная система, отключающая сайта, если вирус там поселился.
Как работает? Очень просто. Из учебника php следует, что закрывающий тег в конце файла можно опустить. То есть код:
<?php
echo «hello»;
тоже считается валидным и нормально работает.
Так вот, берем какой-нибудь WP, стираем в index.php нафиг закрывающий тег PHP (а именно вот этот: ?>). Все!
Чего ж будет-то? Если злоевек зальет Вам на сайт свой злоефрейм, то возникнет ошибка при исполнении этого файла php и сайт не откроется. Чем это важно? Важно тем, что владелец сайта, посещая свой сайт, сразу поймет, что на сайте поселился вирус, а посетители сайта не заразятся вирусом, т.к. сайт отключился.
Оставьте свой комментарий
|
28.03.2009 в 11:07 пп
изящно!
29.03.2009 в 9:12 дп
очень грубо, но оригинально =)
помойму лучше написать скрипт на проверку последнего изменения файлов или на проверку iframe. А лучше и то и другое. При обнаружении сделать пару функций – удалить/оповестить админа. Получиться такой миниантивирус.
Есть маленький недочет конечно, пользователи все равно подцепят эту хрень, но зато владелец сразу поймет, что к чему.
Конечно можно запускать эту проверку каждый час/два, но нагрузка при сканировании будет большая и вряд ли хостер обрадуется =)
ps
имхо отключение сайта не выход, да причем еще и светить недочеты. Большинство пользователей после этого и не придет больше.
psps
а чтобы не ловить ифреймы, нефиг пользоваться ie =)
29.03.2009 в 10:05 дп
Если честно, никогда не сталкивался с вирусами на своих сайтах. Но статья превосходна! Спасибо, возьму на заметку :)
З.Ы. Что закрывающий тег можно опустить, я не знал..
29.03.2009 в 10:10 дп
Если уж китайская, то хитро:)))
29.03.2009 в 11:51 дп
Хз-хз, по-моему, это даст иллюзию защиты. Код, который универсально всё вставит не такой сложный. Плюс не забывай mod_rewrite, auto_append_file и кучу других возможностей поюзать взломанный сайт.
Кстати, можно за компанию время изменения файлов чекать, если не лень. Изменилось – значит хакнули.
29.03.2009 в 12:27 пп
Однажды пришлось лечить от вирусов, работающих по этому принципу, сайт на Джумла.
Через некоторое время начал изучать Drupal. В нём как раз и реализовано это решение. Как говорится из коробки. Все php-файлы без закрывающего тега.
Помнится никак не мог понять почему у разработчиков такая забывчивость, пока на форуме не нашёл объяснение. :roll:
29.03.2009 в 12:29 пп
Все гиниальное просто.
29.03.2009 в 12:54 пп
вообще для этого есть плагин, который отслеживает изменения файлов и на «доске объявлений» выводит если кто-то в них покопался
29.03.2009 в 1:54 пп
Спасибо за комментарии :) Я запостил это решение скорее из-за его оригинальности, а не из-за того, что оно очень хорошее, поэтому и «китайское». Конечно, для реальной борьбы с вирусом лучше использовать какой-нибудь скрипт, отслеживающий время изменения файла или еще что-то.
29.03.2009 в 3:51 пп
vikeng, нет, друпальщики даже и не думали об этом. Просто в конце файла можно опускать закрывающий тег и все. А защита… Это скорее интересное наблюдение.
30.03.2009 в 11:19 пп
а что мешает злоумышленнику написать echo «…»; ? :)
30.03.2009 в 11:21 пп
в предыдущем коменте теги порезались, я имел ввиду ифрейм вывести через echo
31.03.2009 в 11:24 пп
>а что мешает злоумышленнику написать echo “…”; ?
ну я так понимаю, у них стандартный скрипт, который ищет index.php и index.html (и в папках тоже), и вставляет в конец iframe. на одном сделанном мной сайте этот код был засунут вообще во все файлы .html (там клиент наловил вирусов и лазил по фтп на сайт). правда, толку от этого никакого не было, за исключением того, что сайт перестал работать, но не от отсутствия закрывающих тэгов, а от того, что в мой index.php не стоит ничего постороннего пихать. еще было смешно, что он напихал в .html, потому что html файлы, как таковые, у меня тоже не используются (у меня .tpl), он же засунул свои iframe в папку с версткой :lol:
судя по всему, они не проверяют зараженные сайты, значит, работают по более общему алгоритму (запихать везде, где можно, невзирая на результат), так как в целом это более эффективно и быстро. или, может просто руки кривые :razz:
насчет закрывающих тэгов – скорей это не от хакеров сделано. на некоторых хостингах, если у вас после закрывающего пхп-тэга будет хотя бы пробел, из-за этого возникнет ошибка при использовании header(‘Location: ….’) – «headers already sent». поэтому я тоже стараюсь закрывающие тэги везде убирать, после того, как это обнаружила. возможно, это и настройками можно убрать, но лень искать.
04.04.2009 в 11:23 дп
интересная мысль ;)
но имхо лучше сделать список своих файлов с чек-суммой и в скрипте, подключаемом через auto_prepend_file сверять, в случае чего завершаться или слать репорт на мыло\асю
с другой стороны – есть тот же siteguard
29.06.2009 в 2:39 дп
а кто помешает злоумышленнику дописать в файл index.php «?>»
ведь если он добудет доступ к фтп, это делается элементарно.
и инфермы я видел цепляют вверху страницы.