Pull to refresh
0
0
Igor Venzhyk @sven47

User

Send message

Безопасность OAuth2

Reading time5 min
Views117K
Данная блогозапись на хабр прежде всего обусловлена появлением «Ключницы» — хороший повод связать и перевести накопленное.


У нас в программе: вольный пересказ спек OAuth2, слабые стороны и Threat Model, 0day на хабретрюк с аутенфикацией.
image
Читать дальше →
Total votes 168: ↑160 and ↓8+152
Comments65

Упрощаем себе жизнь с помощью Sublime Text 2

Reading time7 min
Views52K
image
Недавно открыв для себя Sublime Text 2, я удивился тому, как можно было придумать настолько эффективный инструмент. Тот кто избалован всяческими IDE, обычно не видит никаких достоинств, кроме красивой подсветки кода (хотя именно это меня изначально и привлекло).

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

Читать дальше →
Total votes 100: ↑76 and ↓24+52
Comments189

Управления конфигурационными файлами в .net проектах

Reading time3 min
Views6.9K

Setty.org


Предисловие


Я думаю, что каждый .net разработчик хоть раз, да сталкивался с проблемами управления конфигами для различных окружений. Часто есть необходимость при разработке новой функциональной возможности поменять строку подключения к БД, не мешая при этом другим разработчикам. Для этого обычно в конфиге меняется строка подключения на локальную базу данных, а потом эти изменения комитятся… Все остальные разработчики негодуют, потому что система перестала работать на их локальных машинах.
Если команда распределённая часто есть необходимость в спецефических настройках. Иногда вам нужны одинаковые настройки для разных проектов в солюшене и вы просто копируете их. В конце концов хотелось бы иметь возможность добавлять различную логику в конфиг. К примеру, на локальных машинах разработчиков отправленная почта должна сохранятся на диске, в то время как на тестовом сервере почта должна отправлятся с использованием сервиса отправки почты. Я думаю можно привести много примеров, которые сложно реализуемы без дополнительного механизма управления конфигами.
Читать дальше →
Total votes 25: ↑19 and ↓6+13
Comments15

Бесплатного супа больше не будет

Reading time23 min
Views17K
Фундаментальный поворот к параллелизму в программировании

Автор: Герб Саттер
Перевод: Александр Качанов

The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software
(By Herb Sutter)

Ссылка на оригинал статьи: www.gotw.ca/publications/concurrency-ddj.htm

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

Данная статья достаточно старая. Ей уже 7 лет, если считать с момента ее первой публикации в начале 2005 года. Помните об этом, когда будете читать перевод, так как многие вещи, которые для вас уже стали привычными, для автора статьи в 2005 году были в новинку и только-только появлялись.

Читать дальше →
Total votes 122: ↑113 and ↓9+104
Comments81

Грязное программирование с чистой душой: разработка эвристических систем (часть 2)

Reading time8 min
Views22K
В первой части этой статьи мы говорили о сложных эвристических программных системах, которые я назвал грязными. В этой части порассуждаем о некоторых практических аспектах работы с такими системами.

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

Читать дальше →
Total votes 61: ↑56 and ↓5+51
Comments32

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)

Reading time3 min
Views22K
Спасибо ресурсу easyelectronics.ru и лично DIHALT, большинство информации черпал оттуда, здесь также будет проскакивать немного материалов с данного ресурса. Для того, чтобы избежать излишнего повторения, рекомендую начать именно с него, там понятным языком расписаны такие страшные слова, как FUSE-биты, ISP программирование или сдвиговый регистр. Предполагается, что читатель диванный теоретик обладает небольшой теоретической базой

Самое лучшее обучение – практика. Именно поэтому, когда я первый раз увидел статью про микроконтроллеры мне захотелось соорудить что-нибудь «эдакое». Первое, что попалось на глаза было видео:


Читать дальше →
Total votes 49: ↑41 and ↓8+33
Comments38

Материалы онлайн конференции .NET разработчиков

Reading time6 min
Views2.8K
4-я .NETconf прошла 28 апреля 2012 и первый раз была в онлайн формате. Это позволило принять участие разработчикам, которые не могли прилететь на 3 предыдущие встречи. За время трансляции 7-ми выступлений в конференции приняли активное участие 508 человек.

Ниже выложены 6 докладов и один мастер-класс с видео, слайдами и ссылками на исходный код.

Читать дальше →
Total votes 32: ↑31 and ↓1+30
Comments10

Ремонтируем монитор содой!

Reading time2 min
Views151K
В последнее время, как мне кажется, пластиковые рудники на грани истощения. Чем больше и тяжелее монитор, тем меньше и тоньше подставка. Так 23'' монитор Samsung постигла участь одуванчика. Случайно наткнулся, в одной из местных news групп, на способ восстановления пластика при помощи пищевой соды. Под катом ремонт стойки монитора.
Далее...
Total votes 195: ↑192 and ↓3+189
Comments104

Рассылки по сегментам на основе MailChimp

Reading time8 min
Views35K
Привет, Хабр! Сегодня я расскажу о том, как можно интегрировать сервис почтовых рассылок mailchimp на своем сайте.
Сервис дает множество возможностей:
— расширенный трекинг;
— выборки пользователей;
— красивые шаблоны писем;
— интеграция с социальными сетями;
— интеграция с Google Analytics;
— экономия времени на разработку своего проекта.
На основе этого сервиса мы сделали автоматическую рассылку спецпредложений по целевым срезам — определенным вендорам и категориям продуктов. Попробуем вкратце рассказать о некоторых особенностях реализации.
Читать дальше →
Total votes 14: ↑12 and ↓2+10
Comments12

Оптический выключатель со звуковым эффектом на Arduino

Reading time4 min
Views38K
Добрый день!
В этом посте я хочу поделится с хабр сообществом о принципе работы сделанного мной
бесконтактного выключателя. Выключатель планируется использовать в системе умный дом.

Основой выключателя является недавно купленный мной улучшенный клон контроллера Arduino, продающегося под названием Carduino Nano V.7
image

Читать дальше →
Total votes 33: ↑28 and ↓5+23
Comments17

Не оставляйте проблемы на самоопределение

Reading time7 min
Views2.3K
Я использую один важный принцип – происхождение которого я расскажу позже – который срабатывает более чем везде где я был. Собственно: в любое время, в любой организации(или процесс, или системе) в которой я находился, всегда было небольшое количество узких мест – это люди, команды, системы, или что-либо еще, что ограничивало результаты всей организации. По факту, обычно, только один.
Читать дальше →
Total votes 31: ↑20 and ↓11+9
Comments21

RESTful API для сервера – делаем правильно (Часть 1)

Reading time13 min
Views332K
В 2007-м Стив Джобс представил iPhone, который произвел революцию в высокотехнологичной индустрии и изменил наш подход к работе и ведению бизнеса. Сейчас 2012-й и все больше и больше сайтов предлагают нативные iOS и Android клиенты для своих сервисов. Между тем не все стартапы обладают финансами для разработки приложений в дополнение к основному продукту. Для увеличения популярности своего продукта эти компании предлагают открытые API, которыми могут воспользоваться сторонние разработчики. Пожалуй Twitter был первым в этой сфере и теперь число компаний, последовавших этой стратегии, растет стремительно. Это действительно отличный способ создать привлекательную экосистему вокруг своего продукта.

Читать дальше →
Total votes 73: ↑70 and ↓3+67
Comments57

Правила разработки сложных систем. История одного проекта

Reading time8 min
Views17K
Привет, Хабр. Меня зовут Александр. И я хочу поделится своей историей работы над одним крупным и сложным проектом.

В этой статье не будет кода и схем, в ней будет только история создания «от и до» самого проекта. Думаю, многим будет интересна данная статья. Итак, поехали!

Начало


Все началось летом 2011. На тот момент я был 3 года чистокровным фрилансером. То есть моя работа — это фриланс. Работал и работаю до сих пор только с западными заказчиками. Основная специализация — разработка проектов связанных с распознаванием образов, текста и т.д.

Все началось с того, что я, как всегда, с утра проверял почту, чистил спам, занимался рутинной работой. Обычно я не смотрю, что у меня в спаме, но тут я увидел письмо, с вполне реального адреса. Я открыл письмо, в котором одна компания искала программиста для допиливания крупного западного проекта. Причем эта компания требовала программиста именно из моего города и обязательно с опытом работы в области распознавания. Я ради любопытства ответил на это письмо. Буквально через час мне пришел ответ. А через два мы уже созвонились с менеджером проекта. Поначалу мне показалось, что ничего сложного в доработке нет, обычный набор функционала. После непродолжительного разговора с менеджером я огласил свой прайс, то есть ставку в час. И на этом мы попрощались. На следующий день мне сказали, что согласны на мой ценник и дали тестовое задание. Я его успешно выполнил в течении часа, и мы двинулись дальше. А здесь начинается самое интересное. Во-первых, меня пригласили в офис для того, чтобы подписать договор о неразглашении (Non-Disclosure Agreement). Во-вторых, и это логично, исходники проекта мне обещали отдать только после подписания договора. Если честно, меня это смутило, не знаю даже почему. И интуиция меня не подвела. Я потребовал хотя бы часть исходного кода, чтобы оценить сложность работы и попросил рассказать подробнее о проекте. Как оказалось проект на тот момент велся уже три года и я был 4 (!) исполнителем. До меня работала американская компания, потом индусы, потом компания, которая наняла меня, пыталась реализовать проект силами одной девочки-программиста, а потом это все чудо предложили разгребать мне. Меня это не просто удивило, а очень насторожило. Потом я узнал множество удивительных вещей, например о том, что заказчик 2 года не видел программу, а видел только скриншоты, а индусы кормили обещаниями этого заказчика. У меня не укладывалось в голове, как такое можно реализовать. Менеджеру индусов надо дать медаль «За находчивость».

После того как я выслушал удивительную историю, мы договорились с менеджером о том, что он мне отдаст исходный код и я оценю масштаб трагедии. Чтобы было более понятно, я расскажу более подробно о проекте. Этот проект — это инструмент для инженеров, архитекторов, электриков и других людей, которые занимаются строительством домов, небоскребов, одним словом зданий. Он служит для подсчета различных элементов на строительных планах, расчета площадей, измерения длин и составления смет. Грубо говоря есть строительный план и на нем есть розетки. Нам надо распознать и посчитать сколько этих розеток. Для распознавания использовалась библиотека написанная другим программистом. Сам проект написан на C#. Моя задача была собрать все воедино и доработать дополнительный функционал, а также привести программу к более менее стабильному состоянию. Кажется все просто и элементарно. Я тоже так подумал. Но не тут-то было.

После того как я получил исходники, я попытался скомпилировать проект. Это мне не удалось. После краткого анализа, я исправил ошибки и все же запустил проект. Но, к сожалению, он не заработал так как нужно. После нескольких часов анализа кода я пришел к выводу, что вся проблема в библиотеке распознавания. На тот момент у меня стояла 64-битная «семерка», а у менеджера 32-битная. У него все работало, у меня нет. Я попросил, что бы мне скомпилировали библиотеку под 64-битную платформу. Но разработчик библиотеки с пеной у рта доказывал, что не в разрядности дело. Я не мог ему ничего доказать, так как он дал очень немного информации о своей библиотеке и вообще берег ее как зеницу ока. Время шло и мне надо было хотя бы полностью провести процесс поиска. Я плюнул на все и поставил себе 32-х битную версию ОС. И о чудо! Все заработало. Отвлекаясь, хочу сказать о библиотеке, в будущем дело все же оказалось в ее разрядности.

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

1. Компоненты и контролы.

Проект очень сильно связан с графикой, но для ее вывода и обработки использовался обычный PictureBox. Самый маленький размер плана — 5400x3600 пикселей. Знающие люди поймут, что для PictureBox -это достаточно проблематичная тема с выводом больших картинок и их обработкой. Не стоит забывать, что помимо самих планов выводится еще много информации (площади, текст, найденные символы и т.д.). При запуске проекта с 5 маленькими планами, программа непременно падала с ошибкой «Out of memory». Что было очень большой проблемой, так как основной задумкой было то, что инструмент должен был работать по принципу «запустил и забыл».

2. Логика архитектуры исходного кода программы.
Читать дальше →
Total votes 122: ↑102 and ↓20+82
Comments97

Сравнительная таблица SaaS CRM-систем

Reading time2 min
Views39K
image Делюсь своим небольшим “исследованием” SaaS CRM-систем. Это уже вторая версия исследования – расширенная и дополненная. Первая версия была опубликована на моей странице в Фейсбук, комментарии к которому помогли улучшить обзор.

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

Данные взяты из официальных описаний на сайте, пробы демо-версии и консультации по телефону с технической поддержкой сервисов.
Читать дальше →
Total votes 29: ↑16 and ↓13+3
Comments21

Очевидные 3 правила безопасности

Reading time2 min
Views60K

Правило №1. Делайте все авторизационные куки HttpOnly


Куки с флагом HttpOnly не видны браузерному коду, а отправляются только на сервер. На практике у вас почти никогда нет необходимости получать их содержимое со стороны клиента (если такая необходимость почему-то у вас возникла — пересмотрите архитектуру авторизации, скорее всего, там что-то не так). А вот злоумышленнику, нашедшему XSS — а XSS так или иначе когда-нибудь где-нибудь найдется — отсутствие HttpOnly на авторизационных куках доставит много радости.

Читать дальше →
Total votes 173: ↑140 and ↓33+107
Comments117

Google Chrome хакеру не помощник

Reading time3 min
Views18K
О том, как Chrome мешает мне искать XSS-уязвимости.


Почему я ищу уязвимости?


Как и многие из вас, я делаю Code Review и первое, что ищу это конечно уязвимости. Когда уязвимость найдена в коде, хорошо бы проверить есть ли она на самом деле через браузер, потому что бывают «ложные тревоги». Это те случаи, когда данные уже приходят фильтрованными и XSS невозможен. Всегда полезно иметь возможность показать разработчику атаку в действии, потому что это хороший аргумент и помогает быстрее перейти к конструктивному решению проблемы, если есть сомнения, что уязвимость таки существует. Но проверку в браузере я делаю не часто — либо проблема очевидна прямо из кода, либо верят на слово. В общем искать уязвимости — это интересно.

Начало этой истории


Друг скинул ссылки на сайт, который ещё год назад имел XSS-уязвимость, о чем я писал владельцам ресурса. Стало интересно проверить снова. Проверил — XSS есть, но вот простейшего подтверждения выполнения JS я получить не смог!..



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

Первые подозрения


Итак, стал проверять всевозможные варианты внедрения кода — но без результата. По ходу дела выяснил что и как фильтруется, какие есть проверки и прочее, но alert(1); упорно не выполнялся. По ходу дела нашелся ещё и XSRF — приятный бонус!
Далее я расскажу как я потреля кучу времени, но выяснил одну важную особенность браузера Chrome.
Total votes 116: ↑92 and ↓24+68
Comments42

Закон Евросоюза о cookies

Reading time2 min
Views31K
cookie lawЗакон Евросоюза о cookies вступил в силу в 2011 году, но ICO (Information Commissioner’s Office) решили, что справедливо будет дать владельцам сайтов один год для выполнения требований закона. Крайним сроком было назначено 26 мая 2012 года. С этой даты сайты, не соответствующие требованиям закона, могут быть оштрафованы на сумму £500 000.
Читать дальше →
Total votes 89: ↑83 and ↓6+77
Comments157

Автоматическая подсветка лестницы с помощью Arduino

Reading time4 min
Views239K
Добрый день! В этом посте хочу поделится с хабро сообществом о том, как мне довелось сделать автоматическое освещение лестницы в своем двухэтажном коттедже. Начну с небольшого грустного отступления.
Около четырех месяцев назад, возвращаясь с работы в полной темноте, я не удачно подскользнулся и сломал две плюсниевых кости (пальца) на левой ступне. Целый месяц пришлось провалятся в постели, так как наступать на ногу было невероятно больно. Потом еще пол месяца хромал без гипса (у кого были переломы меня сразу поймут). После этой печальной истории я начал задумываться об автоматизации освещения ступенек лестницы. Немного поиграв с поисковыми запросами, нашел для себя очень простое решение в этом блоге, как раз на основе моего любимого микроконтроллера Arduino. Схема не вызвала каких то трудностей, но отпугивало количество и длина проводов, которые мне предстояло смонтировать. До этого ничего подобного не делал. Покупать готовые решения или нанимать кого-то — накладно. В течении месяца заказал нужные комплектующие и не торопясь смонтировал за несколько дней на свою лестницу. Всем кому интересно, что из этого получилось, добро пожаловать под кат (осторожно трафик)!
Читать дальше →
Total votes 155: ↑154 and ↓1+153
Comments134

Очень интересный вариант защиты от SQL-инъекций и XSS

Reading time1 min
Views5.9K
Один весьма мной уважаемый гн Ден Каминский (Dan Kaminsky — известен благодаря обнаружению им фундаментальной уязвимости в DNS ) предложил очень интересную универсальную технику защиты от SQL injection и XSS.

Метод очень просто и от того гениален.
Читать дальше →
Total votes 121: ↑63 and ↓58+5
Comments178

Видеоматериалы, блоги и подкасты для .NET разработчика

Reading time5 min
Views17K
Видеоматериалы


В одной из своих статей Бьёрн Страуструп (папа С++) признался, что он не признает видео материалы в качестве источника для самообразования. И с ним сложно не согласиться, когда речь касается изучения с нуля языка программирования или технологии. Я правда сомневаюсь, что можно одолеть такого монстра, как С++ или стать гуру WPF лежа на диване и просматривая обучающее видео типа «Узнай все за 24 часа». Но если вы ставите себе цель познакомиться с некоторой технологией или новой возможностью языка программирования, или просто послушать философско-компьютерные размышления умного товарища, то в этом случае веб-касты, записи конференций или другой вид видеоматериалов может быть очень кстати.
Читать дальше →
Total votes 53: ↑48 and ↓5+43
Comments19

Information

Rating
Does not participate
Location
Киев, Киевская обл., Украина
Date of birth
Registered
Activity