Цифровая подпись

9 комментариев

Я надеюсь вы читали одну из моих предыдущих статей Ассимитричное шифрование. Как это работает?. Если да, то давайте продолжим погружаться в тему криптографии (если нет… прочитайте).

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

  1. мы берем публичный ключ того кому хотим отправить сообщение;
  2. шифруем сообщение с помощью ключа;
  3. передаем сообщение по открытому каналу;
  4. адресат расшифровывает сообщение своим приватным ключом.

Представим что Боб получил зашифрованное сообщение от Алисы. Но от Алисы ли? Да, в конце письма может быть написано «С любовью, Алиса», но откуда нам знать, что это не подлая Ева представляется чужим именем? Читать далее →

Поставил сертификат Let’sEncrypt

11 комментариев

Установка сертификата от Let's EncyptВот наконец решил попробовать SSL сертификат от Let’s Encrypt. Сподвигло меня на это то что, купленный мной ранее сертификат от COMODO, на платформе Android оказывается считается недоверенным. А я ни сном ни духом об этом( Да и вобщем хрен с ним с тем сертификатом, стоил он всего 8$, и во первых не жалко, а во вторых, FireFox начал ругаться на то сертификат использует небезопасное шифрование 1024bit.

Вообще что такое Let’s Encrypt? Это центр сертификации который выдает бесплатные HTTPS сертификаты. Ну и немножко википедии:

Проект Let’s Encrypt создан для того, чтобы большая часть интернет-сайтов смогла перейти к шифрованным подключениям (HTTPS). В отличие от коммерческих центров сертификации, в данном проекте не требуется оплата, переконфигурация веб-серверов, использование электронной почты, обработка просроченных сертификатов, что делает процесс установки и настройки TLS-шифрования значительно более простым. Например, на типичном веб-сервере на базе Linux, требуется исполнить две команды, которые настроят HTTPS шифрование, получат и установят сертификат примерно за 20-30 секунд.

Читать далее →

Error-Based SQL injection в MySQL

Оставьте свой комментарий

SQL injectionЧто такое SQL инъекцию сегодня наверное знает каждый второй ребенок. Error-Based — уже менее знакомый термин, но все же так же прост для понимания.

На всякий случай попробую объяснить. В некоторых ситуациях инъекция происходит в запросе который непосредственно не выводит никаких данных на страницу, либо же вообще никак не влияет на вывод. И если в первом случае данные из базы можно извлечь относительно просто, используя IF, косвенно влияя на вывод страницы, и тем самым прибегнув к бинарному поиску. То вот во втором случае — все очень грустно, бинарный поиск, как правило, основывался на конструкции SLEEP и замере времени ответа, что давало огромные задержки на вывод данных через эту инъекцию.

Следующей вехой в развитии этой атаки стал вектор Error-Based. Он основывается на выводе информации в тексте ошибки выполнения запроса. Как вы понимаете, для этого нужен прямой вывод текста ошибки на саму страницу. Да я согласен, это бывает не часто, и вообще за вывод ошибок на продакшене нужно жестоко карать. Но если вам повезло, то это поможет существенно сократить время атаки.
Читать далее →

Пишем свой плагин для WordPress, добавляем в каталог плагинов

Оставьте свой комментарий
Wordpress change comment parent

Плагин в репозитории WordPress

Вот написал простенький плагин для WordPress-а, и добавил его в официальный репозиторий плагинов. Что делает? Позволяет изменять родительский комментарий для любого пользовательского комментария.

К примеру, частенько пользователи промахиваются с веткой, и отвечают не в ту, что ломает наглядность ведения комментариев. И если случайному пользователю, оставившему комментарий, дела до этого, как правило, нет, то вот последующим читателям это может доставить неудобства. Читать далее →

Теперь в РБК есть абзац про меня :)

Оставьте свой комментарий

Ну вот, только сейчас заметил что про меня немножко написали в РБК:

Бесконечная война

Автор блога IntSystem.Org Дмитрий Амиров, утверждающий, что взломал Keycaptcha, называет captcha атавизмом, который заставляет пользователя совершать ненужные действия, не обеспечивая должной защиты. «Это раньше распознавание символов с картинки для компьютеров было сложной задачей, сейчас все это обходимо, с пазлами — то же самое, — объясняет Амиров РБК. — Взломщик, если задастся целью, сможет легко обойти любую интерактивную капчу. Очевидно, на смену ей должны прийти более продвинутые технологии». По его словам, на написание алгоритма для сбора мозаики Keycaptcha у Амирова ушел всего один вечер. Гарантировать стопроцентную защиту не может ни одна captcha, задача иная — сделать процесс взлома экономически нецелесообразным, парирует Владыкин.

Для тех кто не понял, это относится к моей статье про взлом KeyCaptcha.
Читать далее →

Проксирование, ресайз и кеширование картинок с помощью NGINX

9 комментариев

Есть некий удаленный сервис (далее images.service.com), по функционалу похож на каталог товаров. У него есть АПИ благодаря которому, я могу выводить этот список товаров на своем проекте (далее site.com). Но вот незадача, удаленный ресурс частенько падает. И как следствие — в каталоге пропадают абсолютно все товары, и вы сами представляете, наверняка, что это такое.

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

Товаров в каталоге около 10 000. Картинок у каждого в среднем 30. Плюс 3 размера каждой картинки (large, medium, small), итого около 900 000 различных изображений (это около 80ГБ). Товары в каталоге динамичны — появляются, удаляются. Т.е. и за актуальностью картинок тоже надо бы следить.

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

Подытожим наши требования:

  • проксировать картинки с удаленного сервиса и сохранять их локально
  • если есть уже сохраненная картинка, то отдавать ее
  • автоматически ресайзить картинки, пересохранять их в progressive JPEG
  • минимизировать обращения к удаленному серверу, а именно:
    • если удаленная картинка не найдена, то такой ответ сервиса кешировать
    • если сервис упал, то такие ответы тоже кешировать
    • если есть уже сохраненная картинка бОльшего размера, то использовать ее (т.е. взять ее, отресайзить, сохранить, и отдать пользователю), без обращения к удаленному сервису
  • в случае ошибки отдавать картинку-заглушку

Использовать PHP или любые другие скриптовые средства не хотелось, из-за их тормознутости/отжирания памяти. Все это удалось решить средствами NGINX.

Читать далее →

И вот четыре года прошло…

11 комментариев

nachalo_polozhennoНу чтож вот он традиционный пост, и да, с той же самой картинкой :)

Сегодня этому блогу исполняется целых четыре года. Но, наверное, это не самое главное событие, которым я хочу похвастаться в этом посте. Главнее то, что, как кто то уже заметил, я вернул этот блог из «забвения», сдул двухгодовалый слой пыли, и снова начал им заниматься. И это несомненно здорово!

Мои мысли, планы на будущее и традиционный обзор интересных постов за последнее время под катом Читать далее →

Gitolite, Автодеплой dev… или как я работаю с GIT

4 комментария
схема деплоя dev версии

Cхема деплоя dev версии

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

Gitolite позволяет управлять репозиториями, настраивать доступ, в общем практически все что нужно и даже чуточку больше. Подробнее об этом можно глянуть в википедии. Но если в кратце, то gitolite предоставляет доступ к репозиториям посредством ssh, авторизуя пользователей по ключам. С помощью коммитов в специальный репозиторий мы управляем остальными репозиториями. В общем до жути удобно, и максимально просто.
Читать далее →

Как работать с IPv6 в PHP

8 комментариев

Работа с IPv6 в PHP

Вольный перевод:
https://www.mikemackintosh.com/5-tips-for-working-with-ipv6-in-php/

Работать с IPv4 в php было очень просто, для этого существовало две функции ip2long и long2ip. Эти функции давали возможность переводить IP адрес в обычное число и обратно. К сожалению, в IPv6 такой возможности нет.

Адрес IPv4 состоит из 32 бит — размер который изначально поддерживает большинство операционных систем и языков программирования. 32-ух и более битные платформы поддерживают работу с числами от 0 до 4 294 967 295 (или 232, которое и является максимальным количеством IP адресов в сети). Это давало возможность преобразовывать адрес в число, что в свою очередь давало возможность экономично использовать память и ресурсы системы.

С IPv6 же другая история. На данный момент большинство компьютеров используют 64-ех битную архитектуру, и работают под управлением 64-ех битной ОС. Самое большое беззнаковое число допустимое на 64bit платформе — 18 446 744 073 709 551 616 (или 264). Но IPv6 допускает несоизмеримо больше количество адресов — 340 282 366 920 938 463 463 374 607 431 770 000 000 (или 2128). Это очень огромное число, и, к сожалению, это приводит к проблемам при работе с ним. Читать далее →

Почему FastVps лучше чем sweb. Наглядно.

6 комментариев

Собственно вот почему:
23 (1)
Не то чтобы это реклама FastVPS, скорее это антиреклама Sweb. Ни для кого не секрет что мой блог продолжительное время хостился на Sweb. Как же меня жутко бесили постоянные ошибки… На графике наглядно видно их количество. Как на сайт ни зайдешь — либо нет ответа, либо 500, либо еще что-то. В техподдержку пишешь — отвечают через сутки — «у нас все нормально».

Но 23.07.2015 я переехал на VPS от FastVPS, и с этого дня уже три месяца аптайм 100%. Может конечно и 3 месяца — не срок, но все-таки показатель. Читать далее →