Блоггеры «В Контакте»!

27.06.2008 

Поискал я немного блоггеров в популярной социалке «В Контакте» и составил немаленький список, которым хочу поделиться с вами. Если хотите в него попасть, то для этого есть несколько условий: регистрация «В Контакте» и популярный или понравившийся мне блог. Оставляйте заявки в комментах.

Фото Блоггер (ник) Блог
Абанова Ольга (Lelya) Абанова Ольга (Lelya) http://www.getincss.ru
Андреевич Станислав Андреевич Станислав http://blog-invest.ru/
Анохин Дмитрий Анохин Дмитрий http://delpher.od.ua
Юлия (Клубника) Юлия (Клубника) http://webclubnicka.ru,
http://healthcollection.ru
Болтиков Денис Болтиков Денис http://denis.boltikov.ru/
Донченко Дмитрий Донченко Дмитрий http://blogproblog.com
Дроздов Юрий Дроздов Юрий http://blog.sribna.com
Жилинский Владимир Жилинский Владимир http://zhilinsky.ru/
Жуковский Сергей Жуковский Сергей http://z.codeby.net
Иванова Ольга Иванова Ольга http://www.epochta.ru/blog/
Колесниченко Сергей (Yukko) Колесниченко Сергей (Yukko) http://estrabota.com.ua/blog/
Крайнов Макс Крайнов Макс http://www.kraynov.com
Кузьмин Евгений (Milax) Кузьмин Евгений (Milax) http://publicweb.ru
Лукомский Дмитрий Лукомский Дмитрий http://fdiver.blogspot.com/
Майнас Артем (Тёмма) Майнас Артем (Тёмма) http://tyomma.ru/
Станислав Малкин Малкин Станислав http://malkin.com.ua/
Матияш Виталий Матияш Виталий http://vitaluha.blogspot.com/
Московенко Влад (Успешный вебмастер) Московенко Влад (Успешный вебмастер) http://seo-lux.ru/
Настенко Роман Настенко Роман http://www.perfectomania.com/blog/
Никулин Александр Никулин Александр http://www.nikulin.biz/
Рабченок Илья (sheller) Рабченок Илья (sheller) http://smopro.ru/, http://sheller888.ru/
Радченко Виктор (ZEXEL) Радченко Виктор (ZEXEL) http://forzexel.com/
Салахутдинов Марат (195531) Салахутдинов Марат (195531) http://195531.com/
Судилковский Денис (sudya) Судилковский Денис (sudya) http://bizdesign.com.ua/
Тестов Александр Тестов Александр http://www.blogbest.ru
Тодосийчук Александр (Tod) Тодосийчук Александр (Tod) http://tods-blog.com.ua/
Толстых Андрей Толстых Андрей http://smopro.ru/
Уваров Стас Уваров Стас http://uvarovstas.com/
Четвергов Евгений (Kopernik) Четвергов Евгений (Kopernik) http://www.kopernik.name
Ясносолнышков Нодар Ясносолнышков Нодар http://nodar.name/

_____
Это интересно:
Поднимаем Google PR на новом ноуте
Веб мастера объединяются и собираются выступить против Яндекса

Герои? Возможно…

27.06.2008 

Бездарно, безвольно, неинтересно и медленно. Так играла Российская сборная в полуфинале континентального первенства. После матча с испанцами чувствуешь себя обманутым. Неужели мы это ожидали увидеть в отчетном поединке? Зачем надо было выносить главных претендентов на победу — сборную Голландии? Чтобы еще 90 минут потоптать газон в Вене? Ах, я и забыл, они ведь герои! Они так далеко зашли, прыгнули выше своей головы! Они подарили нам праздник! Скажите, а разве после 1/8 чемпионат закончился и это повод, извините, расслаблять булки?

Конечно, команду по приезде домой ждет прием у Медведева. Конечно, футболистами будут интересоваться известные футбольные клубы. Конечно, … Но неужели нельзя об этом думать потом — после последнего матча ЕВРО?!

Позорище! Такое ощущение, что россияне готовились к матчу где-то в кабаке. Все футболисты пребывали в каком-то сонном и тормознутом состоянии. Жиркова проглотил и не заметил этого Рамос. Жиркова, которого все носили на руках и чуть ли не боготворили. Аршавин. А он был на поле? А где была полузащита вообще? А сколько вы вспомните выигранных подборов? Правда, Рома Павлюченко молодец — без упущенного вернякового момента не ушел с поля.

Не было самого главного — огонька в глазах, желания пройти дальше, доказать что они способны не просто громко выстрелить пару раз в направлении мишени, а мощно бабахнуть и поразить главную цель. Россия вышла на поле с чувством выполненого долга и провела в ПОЛУФИНАЛЕ свой худший матч чемпионата.

Вы знаете, ничего не хочется писать больше об этом матче. 3:0 и этим все сказано. Вы не подумайте что я тут специально гажу и пытаюсь испортить общее впечатление от игры России на этом ЕВРО. Я сейчас болел за сборную соседней страны не меньше чем за родную в 2006-м на ЧМ. Просто я пытаюсь донести главное. Герой не тот, кто выиграл бой, а тот кто выиграл войну. Мне было безумно жалко, что в первом матче чемпионата испанцы вынесли россиян, которые играли достаточно симпатично, с таким неприличным счетом — 4:1. И мне нисколько не жалко за счет, который только что запечатлело табло стадиона в Вене — все справедливо и победил сильнейший, причем настолько, что местами игра напоминала драку крепкого дяди, спортивного телосложения с хулиганом-пацаном. Без вопросов.

Надеюсь, этот горький опыт научит славян идти до конца, а не останавливаться на полпути разинув рот в восторге от пройденного.

Мда… Жаль… Чувствую, очередной шанс выйти в финал турнира такого калибра выпадет нескоро…Жаль еще раз… Но кто ж им доктор?
_____
Рекомендую:
ePochta Mailer — лучшая в России программа для электронной рассылки
Регистрироваться в белых каталогах можно и нужно
Создание сайтов по доступной цене

SQL injection. Объясняем на пальцах

25.06.2008 

В этом посте немножко коснусь темы безопасности сайтов. Думаю, каждый, кто интересовался темой хака инет-ресурсов, слышал о таком понятии, как SQL-инъекции. Фактически любой сайт, разработчики которого не уделяют должного внимания вопросу безопасного программирования, может быть легко «взломан» этим видом атаки. Чтобы понять, что и к чему в этом посте, необходимо обладать техническим минимумом, в частности, иметь представление о том, что такое PHP и MySQL.

Итак, что же из себя представляют эти «инъекции», да еще и SQL?

0. Сначала было слово

SQL injection — одна из самых опасных уязвимостей вэб-приложений. Позволяет злоумышленнику выполнять запросы в БД сайта, а в некоторых случаях писать/читать файловую систему с правами сервера баз данных. Уязвимость возникает в большинстве случаев из-за недостаточной фильтрации данных при построении запроса.

1. Немного теории

Любой запрос SQL состоит из нескольких предложений.

SELECT *
FROM base_user

Это пример самого простого запроса, который состоит из двух предложений: предложение SELECT и предложение FROM. Для выбора по условию к запросу добавляется предложение WHERE. В нем обычно и скрываются неприятности.

SELECT *
FROM base_user
WHERE id=1

В MySQL литеральные строки заключаются в двойные или одинарные кавычки. Комментарии пишутся после или /*. Первый вид комментария — комментарий до конца строки, второй — до символов */, по аналогии с С++ или до конца многострочного запроса.

Также стоит упомянуть про объединение результатов запроса с использованием оператора UNION.

SELECT name
FROM A
WHERE id=1
UNION
SELECT name
FROM B
WHERE id=2

Оператор UNION эквивалентен теоретико-множественному оператору объединения множеств. Работает только с запросами на выборку, необходимо одинаковое количество выбираемых полей в предложении SELECT для обоих объединяемых запросов.

Начиная с 5-й версии, MySQL поддерживает написание подзапросов, которые заключаются в круглые скобки ().

2. От слов к примерам

Целые числа

$id = $_GET['id'];
mysql_query("SELECT * FROM base_user WHERE id=" . $id);

Данный пример собирает запрос, подобное можно встретить во множестве сайтов. Как видно, в запрос просто подставляется значение ячейки суперглобального массива $_GET.

Что можно сделать? Мы видим, что переменная id никак не фильтруется, тоесть в GET-запрос мы можем вписать все что угодно.

Сначала узнаем количество полей возвращаемых запросом, для этого начинаем угадывать количество столбцов.

http://test.com/test.php?id=1+UNION+SELECT+1+/*
http://test.com/test.php?id=1+UNION+SELECT+1,2+/*
http://test.com/test.php?id=1+UNION+SELECT+1,2,3+/*

и т.д., при несовпадении количества столбцов сервер будет отвечать ошибкой MySQL. Стоит заметить, в запросах используется /* для комментирования оставшегося запроса, мало ли что там девелопер еще написал…

После определения количества столбцов можно узнать, например, версию сервера. Cоставляем запрос вида:

http://test.com/test.php?id=1+UNION+SELECT+VERSION()+/*

Дальше, покопавшись в документации MySQL, можно набрести на системные таблицы INFORMATION_SCHEMA и на БД mysql. Если сервер настроен плохо, то можно надеятся на права чтения этих таблиц и баз данных. Для выполнения запроса к другой базе данных достаточно поставить ее имя перед именем таблицы и поставить «.»(точка) между именем БД и таблицей. Пример:

mysql.user

Имея доступ к INFORMATION_SCHEMA, злоумышленник легко узнает количество, имена и структуры всех таблиц БД.

Продолжим о вкусностях. Сервер MySQL имеет очень удобное предложение запроса на выборку INTO OUTFILE.

http://test.com/test.php?id=1+UNION+SELECT+1+INTO+OUTFILE+'/tmp/1.txt'

Запрос такого вида позволит записать результат запроса в файл. Хоть эта возможность встречается не так часто, но с ее помощью на сервер можно загружать любые файлы.

Приступим к чтению файловой системы.

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test

Запрос загружает содержимое фала в таблицу базы данных. С этим типом запросов возникают некоторые трудности при его инъекции в другие запросы, но в этом случае можно извратиться построением подзапросов.

Литералы

$name = $_GET['name'];
mysql_query("SELECT * FROM base_user WHERE name='" .  $name  . "'");

Этот код безопаснее предыдущего, но только в том случае, если в настройках PHP включены magic_quotes. При включении magic_quotes во всем вводе экранируются кавычки. Если же «волшебные кавычки» отключены, то запрос строится по принципу как и с целочисленными данными, только закрывается открытая кавычка

http://test.com/test.php?name=TEST'+UNION+SELECT+1,2,3+/*

В итоге, вместо

SELECT * FROM base_user WHERE name='TEST'

получаем

SELECT * FROM base_user WHERE name='TEST' UNION SELECT 1,2,3/*

3. Как защититься

Существуют разные способы защиты от инъекции, но в основе каждого лежит правильная и хорошая фильтрация пользовательского ввода. Данные к вэб-приложении поступают из массивов GET, POST и из COOKIE. Любой из массивов может быть преднамеренно изменен. Необходимо контролировать типы входящих значений. Например, попробуйте ВКонтакте в комментарий написать union или какой-то запрос.

Нужно численные значения преобразовывать к численным посредством intval(), floatval() и тп.

$a = intval($_GET['a']);

Это уже не позволит вместо $а вписать какой-то запрос. Следует отметить, что intval() нельзя использовать при проверке число или нет в переменной. Intval() возвращает 1 при непустых значениях параметра любого не числового типа. Для проверки на число лучше использовать is_numeric().

Для строковых значений следует использовать addslashes(), которая экранирует все кавычки символом \. А еще лучше html_entities() для кодирования символов сущностями html(" и т.п.).

4. The End

Как видно, доступ к чтению БД очень опасен. Если кому-то кажется, что md5 хеши (да и вообще любые другие) паролей довольно безопасны, хочу огорчить — существует множество онлайн баз данных хешей, которые за несколько секунд позволяют его вскрыть. Также недавно натолкнулся на программку, которая, по заявлению разработчика, способна на GeForce 9600 вскрыть любой md5 хэш за полдня.

При использовании сырого PHP и глобальных массивов стоит быть очень осторожным. Последствия могут быть плачевными. Следует с ответственностью относится к настройке прав пользователей базы, запрещать чтение INFORMATION_SCHEMA и базу данных mysql. Необходимо фильтровать все входные данные. На живых сайтах стоит отключать error_reporting и дамп ошибок БД в браузер.

Спасибо за написание статьи моему другу Bolshevik’у, а мне спасибо за то, что опубликовал :-)
_____
Рекомендую:
Продвижение сайтов в Украине
Пока звезды Реала рубятся на Евро-08, мы проникли в раздевалку великого клуба
Программное обеспечение для создания собственных безопасных e-mail рассылок
Как заработать в интернете НЕ продавая информацию

Война с «интеллектуальной» адресной строкой в FireFox 3

24.06.2008 

Как я и писал ранее, одной из особенностей новой версии Файрфокса является новый вид адресной строки. Новшество состоит не столько в каких-то внешних изменениях, а сколько в логике ее работы. Напомню, что при вводе адреса, браузер предлагает в выпадающем списке не только перечень сайтов, УРЛи которых начинаются с введенных символов, но и также анализирует заголовки посещенных страниц и их тексты. Такая вот получилась «интеллектуальная» адресная строка

Это изменение многим нравится. А многим и не нравится, и таких консерваторов немало. В этом посте хочу рассказать, как можно убрать этот функционал адресной строки браузера, который определенному количеству пользователей Лисы кажется лишним. Мне, признаюсь, изначально тоже это очень нравилось, но теперь уже привык.

Итак, пошаманить с адресной строкой Файрфокса можно следующими способами:

1. Полностью заблокировать выпадающий список
Откройте страницу настроек браузера about:config. Найдите параметр browser.urlbar.maxRichResults и установите для него значение -1. Все. После перезагрузки Лисы при вводе адреса, браузер вам больше не будет ничего подсказывать. Вы его заткнули :-)

Кстати, это значение равно количеству строк с подсказками, которые выпадают при вводе адреса. Так что этот параметр может пригодится не только для блокирования.

2. Показывать в адресной строке только УРЛи посещенных ранее сайтов
Идем все на ту же страницу настроек Лисы about:config. Ищем параметр browser.urlbar.matchonlytyped и устанавливаем его значение в true. Перезапускаем браузер. Все.

Так же следует здесь упомянуть и плагин, который превращает «интеллектуальную» адресную строку в аля Файрфокс 2 — это oldbar.
_____
Рекомендую:
— Самостоятельное продвижение сайтов. Популярные статьи.
Новая Зеландия. Самый полный фотоархив в Рунете.
Разработка сайта в Киеве
ePochta — электронные рассылки своими руками

О плохом в блогах

19.06.2008 

Плохой блогБез предисловия приступим:

1. Дизайн должен быть или простым или, если хочется чего-то оригинального, качественным. К простым дизайнам можно с большой натяжкой отнести стандартные блогспотовские шаблоны. А страдают внешним видом в первую очередь блоги, которые на Вордпресс и в ЖЖ. Например, жутко раздражают темплейты в которых темный фон и светлый текст. Это еще куда не шло для фотоальбомов, но для текстовой информации — это убийство глаз и потеря потенциального читателя. Про остальное я промолчу. Главное помните, что использование большого количества цветов хорошо на картине, каком-то красочном флешовом сайте, но не на блоге. Главное здесь — контент. Дизайн его должен лишь дополнять.

2. О грамматических ошибках, не говоря уже о синтаксических, я расписывать не буду. Про это написано уже очень много. Просто скажу, что читатель должен воспринимать в первую очередь информацию, которая идет в посте, а не цепляться глазами за откровенные ляпы в написаниях слов. Конечно, самое главное смысл и то, что автор хотел сказать, но когда это делается неграмотно, то автор, как минимум, начинает восприниматься не всерьез

3. Обилие рекламы и ее нецелесообразность. Всего должно быть в меру, думаю, с этим никто спорить не будет. Но кроме этого, не вижу смысла в размещении на не популярных блогах АдСенс рекламы, которая приносит копейки зато занимает место.

4. Когда у рекламного материала нет соответствующей пометки. Это расценивается читателями как обман, т.к. они привыкли к искренности автора и тут вдруг ни с того ни с сего он начинает расписывать в красочных тонах о каком-то «левом» сервисе. Постоянные читатели легко раскусывают этот момент и отсутствие пометки «* на правах рекламы» может их немного огорчить.

5. Уважаемые блоггеры, читателям, уж поверьте мне, не интересно читать про ваши личные достижения, с каким настроением вы проснулись, где работали и прочее. Если конечно вы не очень публичная личность. Человек приходит к вам на блог за информацией, которая может пригодится и он ее может где-то применить. А вместо этого он видит рассказ о том какой автор хороший. Конечно, это ВАШ блог и вы что хотите то и можете писать в нем. Но не поверю, если кто-то скажет, что все это пишется не для посетителей.

6. Нарцисизм. Это когда автор себе цену не может сложить и в каждом посте четкой линией видится мысль о том, какой он супер-пупер, а вы никто. Даже если ты и достиг каких то высот, то не обязательно с ними носиться как курица с яйцом и тыкать всем в лицо.

7. Модерирование комментариев. Человек. оставляющий свое мнение, сразу после нажатия на кнопочку «Отправить» ищет в толпе комментов свой родимый. И не находит, а видит заунылую надпить «Ваш комментарий отправлен на модерацию ибо нех». Но есть еще вариант похуже, это когда модерации приходится ждать больше часа-двух. В этом случае вы читателя больше не спровоцируете на оставление коммента.

8. Когда хочешь выйти на связь с автором, заходишь в раздел «Контакты» или ему подобный и видишь вместо номера аси или мыла контактную форму. Лично у меня она почему-то ассоциируется с отправлением сообщений в пустоту, поэтому пользуюсь очень редко.

9. Наличие матерного лексикона в постах. Не умеешь выразить свою мысль без «х», «п», и «б»? Иди в библиотеку и пополняй свой словарный запас.

10. Обливание грязью другого блоггера, особенно если это происходит в завуалированной форме. Т.е. как бы все и поняли о ком идет речь, но автор не пишет кого конкретно он мел виду. Это похоже на оставление пространства для маневра, т.к. в случай чего можно сказать: «А где это я о тебе такое писал?»

Это основные моменты. Напоминаю, что это лишь мое мнение и оно не может совпадать с вашим. Если это произошло, то прошу отписаться в комментах — подискутируем. Но мне кажется, если автор будет придерживаться этих 10 правил и регулярно писать на блог, то очень скоро дела у него пойдут вверх. Дела в блогосфере.
_____
Блог о путешествиях, туризме и отдыхе
Лучшую фотография города-призрака Припяти
— Самый полный в блогосфере прайс-лист на постовые