Pull to refresh
0
0
Михаил @ZloiZmei

User

Send message

Криптостойкость 1000-кратного хеширования пароля

Reading time5 min
Views26K


Поднявшаяся в этом топике дискуссия о криптостойкости многократного применения хеша над паролем (проскальзывавшая, кстати, и в других форумах), подтолкнула меня к этому немного математическому топику. Суть проблемы возникает из идеи многократной (1.000 и более раз) обработки пароля перед хранением каким-либо криптостойким алгоритмом (чаще всего хеш-функцией) с целью получить медленный алгоритм проверки, тем самым эффективно противостоящий brute force-у в случае перехвата или кражи злоумышленником этого значения. Как совершенно верно отметили хабрапользователи Scratch (автор первой статьи), mrThe и IlyaPodkopaev, идея не нова и ею пользуются разработчики оборудования Cisco, архиватора RAR и многие другие. Но, поскольку хеширование – операция сжимающая множество значений, возникает вполне закономерный вопрос – а не навредим ли мы стойкости системы? Попытка дать ответ на этот вопрос –
далее ...
Total votes 332: ↑328 and ↓4+324
Comments103

Неправильные деньги. История одного стартапа — часть III

Reading time4 min
Views15K
История TheCommentor - неправильные деньги После длинного затишья мы продолжаем наш цикл статей посвященных созданию стартапа. В этой, третей по счету, части мы расскажем как мы за месяц получили финансирование нашего проекта и как и почему мы через 4 месяца его потеряли.

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

Для тех, кто не читал предыдущие части: I часть про идеи и II часть про пилот
А теперь подробнее ....
Total votes 60: ↑54 and ↓6+48
Comments72

Амперка — магазин Arduino

Reading time1 min
Views8.3K
image
Многие на Хабре знают, что такое Arduino. Собственно, ему посвящён отдельный блог. Некоторые даже успели возненавидеть его за то, что для любой примитивной штуковины мигающей лампочками вместо пары транзисторов за пять копеек, народ за основу берёт эту платформу.

Не буду рассуждать на эту тему. Скажу лишь, что некоторое время назад меня так же заинтересовала эта игрушка. Однако когда я решил приобрести себе такую, стало понятно, что это не тривиально. Лучшее, что предлагалось в российских магазинах на тот момент — реплика оригинального Ардуино, с 100% предоплатой, с доставкой Почтой России. Да и ассортимент аксессуаров сильно отставал от европейских. Поэтому в итоге я сделал заказ в немецком магазине с доставкой через UPS. Переплата за доставку была ощутимой.

Я поэкспериментировал с платформой, понял, что это на самом деле — крутотень. Показал друзьям — они одобрили. Вспомнил про интерес, любовь и ненависть на Хабре и подумал: «А почему бы не попробовать продавать их в России? Ну или в Москве для начала».
Читать дальше →
Total votes 77: ↑64 and ↓13+51
Comments87

Из чего готовят Google Analytics Cookies

Reading time3 min
Views23K
печеньки
Добрый день.
Недавно одни из наших заказчиков выразили желание получать дополнительную информацию о посетителях своего сайта, конкретнее — о людях, заполнивших контактную форму. Это крупная европейская компания и им хотелось бы «фильтровать» своих потенциальных клиентов. Поясню на примере — допустим, решают они организовать выставку своего оборудования в Венгрии и им нужно решить, кто из венгров, оставлявших им свои контакты, скорее всего стоящий клиент, а кто «мимо проходил».
Основными показателями «надежности» клиента для нас стали: число посещений сайта, время проведенное на сайте, количество просмотренных страниц. Всю эту информацию мы получили из Google Analytics Cookies.

Что же из себя представляют печеньки от Google?

Читать дальше →
Total votes 131: ↑126 and ↓5+121
Comments17

Symfony: как начать

Reading time5 min
Views60K
Чем больше я работаю над своим первым проектом на работе, тем больше мне хочется в нем поменять и тем больше я жалею о том, что перед началом работы я не прочитал до конца «The Definitive Guide to Symfony» и не изучил плагины для Symfony. Многие из них мне бы помогли намного сократить время разработки и, что самое главное, не думать о том, как красиво реализовать те или иные вещи… И еще одно — если у вас уже есть кусок системы (как это было у меня), который вы собираетесь переписывать с использованием вашего фреймворка (или просто переписывать, потому что код вам не нравиться) — то мой вам совет — потратьте время на то, чтобы спроектировать этот кусок на план вашей новой системы, не бросайтесь сразу всё переписывать (каюсь, я поступил именно так), так как после анализа (который, возможно, займет у вас не один день, и даже не одну неделю), возможно, от предыдущей архитектуры системы не останется и следа.
Вообще, я люблю проектировать, продумывать, анализировать те или иные решения, которые хочу внедрить в систему (хотя, признаюсь, опыта у меня в этом маловато), но как обьяснить заказчику, что ты провел день в раздумьях… Эх…
Ну ладно, это я отвлекся. Сегодня хочется рассказать о том, с чего стоит начать при разработке системы с помощью Symfony и каких правил следует придерживаться.
Читать дальше →
Total votes 44: ↑41 and ↓3+38
Comments87

История одного бага или как я ZIP паролил

Reading time4 min
Views7.3K
Это история личного опыта, опыта поиска бага в чужом, старом, неподдерживаемом коде.
Все начиналось как обычно, передо мной стояла простая на первый взгляд задача: сделать упаковку файлов в текущей папке в ZIP архив с определенным паролем на C++/Qt, казалось бы что может быть проще?
Естественно, первый помощник это Google, он и подсказал что существует две Qt библиотеки для работы с ZIP архивами:
QuaZIP и OSDab ZIP, помимо всего, сам Qt поддерживает методы qCompress и qDecompress для упаковки.
Мною было выяснено что методы мне мало подходят, потому что они умеют лишь жать поток, все заголовки и шифрование на совести разработчика. Этот путь был слишком долог и от него я отказался сразу и обратил свое внимание на библиотеки.
OSDaB ZIP пришлось отбросить сразу, не смотря на то, что это отличная библиотека, ее код распространяется только под лицензией GPL, мне же нужно было встроить функционал в проприетарное приложение. К счастью QuaZIP оказался с двумя лицензиями GPL и LGPL. На нем я и остановился. Особо не вникая в его устройство, я набросал простейший класс для работы ним и начал тестировать.

узнать продолжение истории
Total votes 134: ↑127 and ↓7+120
Comments34

Двойной клик на элементах, которые можно потаскать

Reading time1 min
Views1.5K
Уже очень давно у меня в браузере установлен UserJS-скрипт, позволяющий изменять размер полей ввода. Сама эта функция есть в некоторых браузерах изначально, но есть у этого скрипта один нюанс:

image

Да, это функция «double-click to reset dimensions». Она вызывает привыкание, и теперь на любом элементе, который возможно подвигать, я на автомате делаю даблклик в надежде, что он примет либо оптимальное, либо первоначальное положение.
Читать дальше →
Total votes 50: ↑43 and ↓7+36
Comments23

Замедление хеширования паролей. Зачем?

Reading time7 min
Views15K
Доброго времени суток, хабрапараноик! Сегодня мы поговорим о немного необычном способе повышения безопасности, а именно замедлении хеширования паролей. Казалось бы, когда всё вокруг стараются оптимизировать, зачем что то замедлять?
Хотя бы затем, что даже в самой супер-пупер защищенной системе самым слабым звеном остается человек. А именно, его пароль.

Вы пытались когда нибудь взломать зашифрованный rar архив? И сколько паролей в секунду оно перебирало? 50-100-200? Даже на хорошем GPU, при использовании небезызвестного cRARk, скорость перебора всего около 2400 вариантов/сек. И это-то по сравнению с десятками (сотнями) миллионов паролей/сек для zip/md5/SHA1.

Под катом моя вольная интерпретация этого процесса.
Читать дальше →
Total votes 91: ↑79 and ↓12+67
Comments107

Windows-компьютер без антивирусов

Reading time6 min
Views63K
Предупреждение: Описанное в статье несколько устарело, т.к. я забросил винды в эпоху Windows 2003.

Каждый раз, когда меня знакомые спрашивают: «какой антивирус лучше?», я могу сказать только одно: «антивирус — как придворный шаман. Бывают лучше, бывают хуже, но определить, кто лучше камлает, не получится». Антивирус не гарантирует защиту от вирусов, более того, у него есть полное моральное право пропустить новую заразу и начать её детектить дня через 2-3 после «инцидента». Т.е. как основное средство защиты он годится не очень.

Ниже описывается настройка windows, которая позволит защититься от любых реальных (т.е. встречающихся в природе) вирусов без использования антивирусов. Данная конфигурация уже 3 с половиной года работает на терминальном сервере, где пользователи (в лучшие времена до 70 человек) совсем не стесняются притаскивать на флешках всяких засранцев, лазать по сети где попало и т.д.

Теория


Любой уважающий себя вирус, оказавшись запущенным, тем или иным методом стремится в системе закрепиться, т.е. создаёт исполняемый файл или библиотеку, которая прописывается тем или иным образом в запуск. «Авто» запуск или в форме «дополнения» к другим исполняемым файлам (debugger, hander, плагин, и т.д.) — не важно. Важно: существует барьер под названием «запуск кода». Даже старые-добрые вирусы, дописывающие себя в исполняемые файлы, всё равно должны иметь возможность писать в файлы, которые предполагается запускать.

Безусловно, есть вирусы, размножающиеся без создания файлов (например, мс-бласт). Но условием появления этого вируса должна быть доступность сервера для обращений с носителей вируса или запуск кода через эксплоит в браузере\сетевой компоненте. В случае дыры в браузере дальнейшее размножение не возможно (т.к. нужно обращаться к браузерам на других машинах, а это требует поднятия сервера, куда будут ходить другие пользователи и мотивации пользователям ходить именно на этот узел). В случае дыры в сетевой компоненте и размножения без сохранения на диск, описанная мною методика с большой вероятностью работать не будет и возможна эпидемия. Однако, я не уверен, что антивирусы поймают такой 0day эксплоит, плюс, их (дыры) довольно резво фиксят, так что этот сценарий я откладываю как маловероятный. Наличие же файрволов ещё более уменьшает их опасность. От не-0day вполне же спасает своевременная (автоматизированная) установка обновлений.

Итак, основную бытовую опасность представляют вирусы, запускающиеся «из файла» (хотя бы потому, что они переживают перезагрузку компьютера). Если мы запретим каким-то образом запуск «неправильных» файлов, то проблема будет решена (т.к. несохраняющийся в файле вирус не сможет пережить перезагрузку, а в случае запуска с правами пользователя, даже банального релогина).

В Windows существует технология — политика ограниченного запуска приложений. Её можно активировать в режиме «запрещать всё, что не разрешено». Если поставить запрет полный — для всех, включая администраторов, все файлы, включая библиотеки, то мы получим точную гарантию того, что посторонний (не входящий в список разрешённых) файл не будет запущен. По-крайней мере я пока не слышал, чтобы в этой технологии были дыры. Обращаю внимание, нужно запрещать и библиотеки тоже, потому что печально известный конфикер запускается с флешек именно с помощью запуска библиотеки обманом rundll32.

Однако, запреты и разрешения не будут иметь смысла, если не сформулировать правила, которые запретят запуск «чужаков».

Модель безопасности


Перед тем, как описать подробно конфигурацию, сформулирую теоретические принципы её организации:

1. То, куда пользователь может писать закрыто для запуска.
2. То, что пользователь может запускать, закрыто для записи.
Читать дальше →
Total votes 139: ↑109 and ↓30+79
Comments133

WordPress заставит всех соблюдать GPL

Reading time3 min
Views6.5K
image
Популярная CMS Wordpress, распространяемая под лицензией GPL оказалась в центре скандала. Система управления контентом получила широкое распространение благодаря удачной архитектуре и встроенной системе «тем» с настраиваемыми шаблонами и «плагинов», что позволяет использовать Wordpress при разработке практически любых проектов от блогов до сложных новостных ресурсов.
По условиям лицензии все дополнения к CMS должны также выпускаться под GPL, но далеко не все разработчики выполняют их. Так, создатели популярной темы Thesis не скрывают нежелания переводить свой платный продукт в категорию свободных. Создатель проекта Мэтт Мулленвег (Matt Mullenweg) вступил в яростный диспут с Крисом Пирсоном (Chris Pearson), автором Thesis, и обвинил последнего в грубом нарушении условий GPL.
Читать дальше →
Total votes 63: ↑58 and ↓5+53
Comments322

Как собрать Кубик Рубика 5х5х5 (часть 1)

Reading time8 min
Views41K
В далеком 2008 году в мои руки попал кубик рубика нестандартных размеров. Как собирать такое чудо, я тогда и понятия не имел. Поначалу мы с друзьями собирали его частично, не имея понятий об алгоритме сборки, но потом захотелось всё-таки научиться собирать его полностью. Через гугл я нашёл некоторое подобие алгоритма сборки, но он к сожалению был неполный и грешил неточностями. Некоторое время анализировав нагугленное и алгоритм классической сборки кубика 3х3х3 я осознал полный алгоритм сборки куба не только 5х5х5, но и 4х4х4 (хотя у меня под рукой не было такого куба, я написал программу для моделирования такого кубика в 3D и проверил алгоритм). Всем, кто хотел бы научиться собирать такой кубик — добро пожаловать под кат.
Читать дальше →
Total votes 248: ↑231 and ↓17+214
Comments72

Правильная работа с исключениями в PHP

Reading time4 min
Views68K
В предыдущей статье я предложил свести все «механизмы ошибок» к исключениям, поэтому логично будет объяснить, как правильно работать с исключениями в PHP.
Сначала поясню, почему я выбрал именно исключения, как механизм работы с ошибками:
  1. Исключения — это гибкий, расширяемый метод обработки ошибок;
  2. Это стандартизованный механизм – человеку, не работавшему с вашим кодом, не нужно будет читать мануал, чтобы понять, как обрабатывать ошибки. Ему достаточно знать, как работают исключения;
  3. С исключениями гораздо проще находить источник ошибок, так как всегда есть стек вызовов (trace).

Сразу скажу, что в этой статье я не открываю Америку. Описаны стандартные принципы работы с исключениями плюс некоторые особенности, налагаемые PHP. Полезно будет почитать новичкам, хотя может быть и опытные разработчики найдут что-нибудь новое для себя.
Несколько советов по работе с исключениями:
Total votes 75: ↑64 and ↓11+53
Comments137

Управление качеством кода

Reading time1 min
Views16K
В одной из книг ДеМарко была приведена интересная история. Представьте, что к руководителю проекта приходит представитель Всемирно Известной Организации по Измерению Качества и сообщает, что команда проекта попала в Топ 10 всех команд в мире по качеству кодирования.

О чем думает руководитель? Его сердце наполняется теплотой и проскакивают мысли «Вот молоцы! А я всегда подозревал...». После чего, представитель вдруг возвращается и приносит свои извинения — произошла ошибка, проект на самом деле 10й с конца. Настроение руководителя кардинально меняется и он уже вовсю проклинает свою команду.

В чем ошибка руководителя? Он не измеряет качество кода.
Читать дальше →
Total votes 42: ↑34 and ↓8+26
Comments91

Потребление ресурсов дистрибутивами Linux при установке

Reading time2 min
Views14K
В ходе отладки облака собралась статистика по потреблению ресурсов инсталляторами различных версий Linux.

Все ОС ставятся полностью автоматом (preseed и kickstart), в минимальной конфигурации с незначительными коррекциями (в частности, openssh-server для дебиана и специальное Xen'овское ядро). Так как собрать статистику «только за установку» не получается, приведена статистика за операцию «установка + первая загрузка».

Установка целиком идёт с репозитория (т.е. сетевой трафик большей частью — это скачивание пакетов).

Показатели:
  • процессорное время — реальное время работы процессора. Время установки системы больше, так как во время операций ввода/вывода процессор простаивает. (фактически, это использованные такты процессора, поделенные на частоту)
  • потребление памяти — благодаря memory on demand объём выделенной памяти меняется «на лету». Для подсчёта получившегося потребления введена синтетическая величина Гб*ч (1Гб*ч = 1 Гигабайт памяти на 1 час или 512 Мб на 2 часа, или 2Гб на пол-часа)
  • Сеть и диск интутитивно понятны. Учитывается как объём, так и количество запросов.

ОС Процессорное время Потребление памяти Запись на диск (Мб, операций) Чтение с диска (Мб, операций) Передано в сеть (Мб, пакетов) Получено из сети (Мб, пакетов)
Debian Lenny i386 2 мин. 39 с 0.065 Гб*ч 1216 Мб, 60657 25 Мб, 3695 1.02 Мб, 19444 130.18 Мб, 91672
Ubuntu Lucid Lynx i386 4 мин. 19 с 0.128 Гб*ч 2324 Мб, 144350 39 Мб, 4430 3.76 Мб, 70887 213 Мб, 154146
Ubuntu Lucid Lynx amd64 3 мин. 39 с 0.563 Гб*ч 2510 Мб, 191514 45 Мб, 4749 4.41 Мб, 83386 214.28 Мб, 155494
Centos 5.4 i386 1 мин 48 с 0.127 Гб*ч 1191 Мб, 153543 137 Мб, 9348 8.65 Мб, 163729 365.39 Мб, 267416
Centos 5.4 amd64 1 мин. 46 с 0.149 Гб*ч 1408 Мб, 185964 139 Мб, 9209 9.01 Мб, 172613 416.75 Мб, 306086

Я не совсем могу объяснить эти результаты (в частности, такая большая разница по времени между ubuntu 32 и 64 бита), однако, центос сильно удивил — время установки у него ощутимо больше, чем у debian, а реальной нагрузки на процессор — меньше.
Total votes 68: ↑44 and ↓24+20
Comments62

Горячие клавиши в шелле

Reading time3 min
Views113K
Посвящается B_dot, пост которого заставил заинтересоваться возможностями консоли плотнее.
cat /dev/cheat-sheet >> /dev/head

Краткое вступление


В этом посте будет рассказано о некоторых сочетания клавиш, которые могут упросить жизнь администраторам, работающим в консоли. Все они работают в bash'e. Сочетания клавиш я дополнительно проверял на циске (Cisco IOS Software, s72033_rp Software (s72033_rp-ADVIPSERVICESK9_WAN-M), Version 12.2(33)SXH4), csh и zsh. Рассмотренное в других записях повторять особо не буду. Сочетания сгруппированы по использованной функциональной клавише.
Особенно полезен этот текст будет людям, которые любят использовать клавиши Home, End и Delete (которые в цисковой консоли «не работают»).
Читать дальше →
Total votes 150: ↑145 and ↓5+140
Comments59

Релиз форумного движка нового поколения Vanilla 2.0

Reading time2 min
Views11K
Вышел долгожданный релиз второй версии форумного движка vanilla. В блоге разработчиков появилось новость о релизе.

Что такое Vanilla?




Vanilla forums — это минималистичный форумный движок. Цель проекта — создать простой инструмент для онлайн-конференций с простой возможностью наращивания функционала. Нет, это не второй phpbb, это действительно очень упрощённый форум.

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

Несмотря на свою кажущуюся простоту этот движок «из коробки» даёт почти всё, что нужно большинству пользователей, как-то: разграничение прав, подфорумы и категории, html/bbcode/markdown.

Что нового?


Те, кто использовали первую версию этого движка, помнят, что он был совсем неприглядным, и для того, чтобы сделать из него «конфетку», пришлось бы очень сильно потрудиться. Со второй версией это уже в прошлом. Из коробки Vanilla имеет простой, но аккуратный дизнайн, которым вполне можно пользоваться. Более того, на официальном сайте в разделе дополнений есть ряд тем, подготовленных профессиональными дизайнерами. Так что, первое, что заметят те, кто пробовал первую версию — это безусловно то, что система стала привлекательнее, и ей даже можно пользоваться «из коробки».

Читать дальше →
Total votes 72: ↑63 and ↓9+54
Comments75

Релиз PHP 5.3.3

Reading time11 min
Views7.1K
Команда разработчиков PHP анонсировала PHP 5.3.3. Этот релиз сфокусирован на улучшении стабильности и безопасности ветки PHP 5.3.x, в нем исправлено более 100 ошибок, некоторые из которых относятся к безопасности. Всем пользователям рекомендуется обновиться до этого релиза.
Читать дальше →
Total votes 92: ↑81 and ↓11+70
Comments66

Революция начинается сегодня

Reading time3 min
Views2K
После нескольких лет разработки, тысяч часов и более миллиона долларов собственных средств, мы с гордостью представляем релиз MODx Revoution 2.0.

Что нового?


MODx Revolution это совершенно новый MODx. Он является самой сутью того, что делает MODx отличной платформой для создания разнообразных веб-сайтов и насыщенных приложений (RIA), позволяя делать Вам больше и делать это лучше.

MODx Revolution 2.0 стал еще более мощным. Он может обслуживать высоконагруженные сайты, а также позволяет управлять мульти-сайтами и поддоменами из одной инсталляции системы.

Список новых возможностей и улучшений в MODx Revolution слишком велик для того, чтобы перечислить здесь каждое из них. Поэтому озвучим лишь те, которые, на наш взгляд, вы полюбите. Больше вы сможете узнать, попробовав MODx в деле самостоятельно или обратившись к списку изменений.
Читать дальше →
Total votes 90: ↑58 and ↓32+26
Comments120

Видеоресепшен — встречайте клиента у него дома

Reading time2 min
Views5.3K
image

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

Актуальным остается лишь один вопрос — каждый ли потенциальный клиент может найти время для того, чтобы прийти и оценить по-достоинству? Вряд ли. Мы привыкли думать, что клиент, который не пришел — не клиент, что не всегда верно.

А теперь попытайтесь себе представить ситуацию, в которой вы встречаете клиента еще у него дома. «Как это?» — спросите вы, а на самом деле все очень просто. Дайте возможность человеку совершить видеозвонок в ваш офис, конкретному менеджеру, и подумайте, насколько повысятся шансы того, что человек, еще минуту назад решивший впервые в своей жизни позвонить в компанию, чье предложение его так заинтересовало, станет еще одним клиентом. Как известно, никогда не будет второго шанса оставить первое впечатление, так почему бы не сделать это еще у него дома?

Попробуйте и вы установить на свой корпоративный сайт виджет и дайте возможность вашему потенциальному клиенту позвонить в ваш офис, узнать то, что его интересует и получить еще одного удовлетворенного клиента, который, непременно, расскажет о том, что он пережил, каждому в своем окружении! В отличие от офисов, ремонта и всего прочего вам это будет стоить ровным счетом ничего. Виджет, размещенный на вашем сайте, позволит бесплатно принимать входящие звонки, элементарен в установке и прост в использовании. Вы можете воспользоваться, например, аппаратным видеотелефоном (мы рекомендуем модель Grandstream GXV3140) или софтфоном (X-Lite, Bria), которые удобны в использовании, а наша компания предоставляет весь сервис бесплатно. Один клик — и видеотрансляция между вами и звонящим вам человеком установлена.

Пришло время, когда мы стираем грани пространства, а ваш офис начинается уже на вашем сайте.
Total votes 31: ↑19 and ↓12+7
Comments20

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity