Search
Write a publication
Pull to refresh
5
0
Андрей @UncleAndy

User

Send message

Логические дыры в безопасности Сбербанк ОнЛ@йн

Reading time4 min
Views5.7K
image
Так получилось, что будучи часто в разъездах и имея зарплатную карту Сбербанка, мне приходилось пользоваться разными банкоматами, в разных ненадежных местах. Соответственно, был высокий шанс напороться на скиммер. (Скиммер – незаконное устройство для считывания данных с пластикой карты, с целью изготовления дубляжа).

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

Таким образом, даже если карту «отксерят», снимут с нее только тот остаток, который я начислил из вклада. Перевод между картой и счетом вклада беспроцентный, что делало идею еще более заманчивой.

Но не тут-то было.
Читать дальше →

Соглашение внутри команды

Reading time3 min
Views4K
Привет, у нас довольно большой поток разношерстных проектов. В какой-то момент нам пришла в голову светлая идея создать внутреннюю хартию ведения проектов, с которой соглашается каждый участник команды. Есть надежда, что это сократит издержки, увеличит качество и уменьшит количество неразберихи, позволит проще вводить новых «игроков» и вообще В качестве системы управления проектами выбрана Redmine, и надо сказать даже в default устанвоке эта штука правильно решает много вопросов за тебя: разделение на Ошибка\Улучшение, интеграция Git, лог действий, подпроекты, удобная Wiki и.т.д.
Наш вариант

Разработка — «Рабочее место кассира» под LINUX. GPL

Reading time5 min
Views26K

Последние новости


Система работает на 15 кассах. Дописывается. git здесь github.com/redeyser/IceCash. почта моя здесь redeyser@gmail.com Видео
www.youtube.com/watch?v=69AF7n6sxDY

Предыстория


Так сложилось, что работаю программистом/админом в розничной торговой сети. Работаю уже два года, до этого никогда не сталкивался с обслуживанием специализированных программ и техники, но разобрался со временем. Особенностью моей организации является то, что вкладываться в нормальную технику начальство не собирается категорически. То есть, модернизацией и близко не пахнет, а вот носиться на замену чего-то, вновь исдохшего приходится частенько. Кроме того, большинство торговых точек не обладают лицензией на установленную ОС Windows XP. На розничных точках стоит одна или две кассы на базе умирающих от старости компьютеров, таких же старых фискальных аппаратов Штрих-М ФРК, различных сканеров штрихкода (COM, USB,Keyboard) и весов METTLER TOLEDO. Из программного обеспечения изначально было только лицензионная (с ключом) 1С v7.7 «ШТРИХ-М Кассир».

Внедряем Linux где это возможно


Помимо обязанностей — следить за кассами, на моих плечах был и офис и удаленный филиал со всеми 1С ками, железом (тоже не новым), серверами. И чего-то я с трудом всё это успевал обслуживать на первых порах. Честно признаться — я юниксофил, потому поспешил с внедрением linux. Постепенно удалось перевести офисных клиентов на Linux, и сразу стало легче дышать, компы перестали зарастать вирусами, оставалось только следить за железом да подбирать и устанавливать нужные программы. Основная работа клиентов продолжалась в Windows, но это был уже терминал на сервере, с ним проще. По возможности сервера я перевел тоже на Linux, оставив только один с windows server 2003.

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

OAuth на практике. Аутентификация и авторизация пользователей сайта через популярные социалки

Reading time14 min
Views347K
Думаю, не мне одному чрезвычайно надоели ресурсы, требующие регистрации по каждому поводу и без. С обязательной капчей, которая правильно введется только с пятого раза, с подтверждением по е-мейлу, которое обязательно свалится в спам и то — только через сутки. Придумывать каждый раз новую пару логин-пароль — забудется, вводить одно и то же на всех сайтах — небезопасно. Местами прокатывают пары вида «qwerty:qwerty» или «login:password», но, увы, далеко не везде. Надоело. Не счесть, сколько раз я, увидев надпись «только зарегистрированный пользователь может ****», просто кривился и закрывал вкладку, чтобы больше ни разу на этот сайт не заходить. Неужели администраторы ресурсов сами этого не понимают?
Читать дальше →

Как разогнать эмулятор Android

Reading time3 min
Views144K
Intel HAXM
Каждый, кто хоть раз работал с эмулятором для разработки приложений под Android, знает, что даже на современном железе эмулятор тормозит так, что для его использования нужно нечеловеческое терпение. То есть, наверное, надо самому стать андроидом-киборгом.

Но есть и еще один метод – попроще.

Intel Hardware Accelerated Execution Manager (Intel HAXM) — это решение, использующее аппаратные возможности виртуализации (Intel VT) и позволяющее значительно ускорить работу эмулятора Android.

Данное решение работает в паре с эмулятором Android для х86 устройств. При этом, эмулятор будет работать со скоростью, приближенной к скорости работы реального устройства, что поможет сократить время на запуск и отладку приложения.
Читать дальше →

Стероиды для Munin

Reading time4 min
Views8.5K
Munin очень неплохая штука для мониторинга серверов, особенно одного-двух. Однако если количество серверов растёт работает он всё хуже и хуже. Под катом рассказ как я разгонял его до мониторинга больше чем 1000 виртуалок (275K rrd файлов в системе).
Читать дальше →

Простой сайт с возможностью авторизации на node.js

Reading time3 min
Views93K
В этой статье я попробую рассказать о том, как с помощью node.js и connect сделать простой сайт с авторизацией. Т.е. такой, где часть контента доступна всем, а часть — только зарегистрированным пользователям. Поскольку express.js основан на connect, практически все, что здесь написано, относится и к нему тоже.
Допустим, что вы уже знаете, что такое node.js и как с ним работать. Также допустим, что у вас уже есть простенький сайт с основной страницей и парой дополнительных. Вот здесь — исходники такого сайта, пример для этой статьи.
Читать дальше →

Вещание онлайн-видео с помощью nginx

Reading time3 min
Views88K

Что такое онлайн-видео?


Под термином онлайн-видео я понимаю длительное вещание какого-то живого видеосигнала (к примеру, из телестудии). Традиционные средства отдачи видео (flv- и mp4-стриминг) в данном случае не работают, просто потому что файла, содержащего весь видеопоток, не существует.

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

C10k (Проблема 10000 соединений) на разных языках/платформах

Reading time2 min
Views40K


UPD. Вторая версия бенчмарка тут: eric.themoritzfamily.com/websocket-demo-results-v2.html


Предупреждение: если у вас есть претензии к бенчмарку и/или к коду, бенчмарк выложен на Гитхабе, что позволяет вам править баги самим или сообщить о багах автору.

Подробнее о проблеме 10000 соединений: ru.wikipedia.org/wiki/Проблема_10000_соединений

Как с проблемой 10000 соединений через вебсокеты справятся Erlang, Go, Haskell (Snap), Java (Webbit), Node.js (websocket) и Python (ws4py)?

скандалы, интриги, расследования

Адронный коллайдер, десятибалльный ветер и коммутаторы

Reading time12 min
Views19K
На Хабре было уже достаточно много топиков на тему ЦОД и вычислительных кластеров, но интересно ли Вам, на каком оборудовании работает гигант facebook или, например, Московский Internet Exchange? Что лежит в основе СКИФ—МГУ «Чебышёв» и какие «железки» в своей сети использует Большой адронный коллайдер? Добро пожаловать под кат, как говорится!

Осторожно! Много картинок и текста.
Читать дальше →

132 сервера в стойке или как уплотниться и не лопнуть

Reading time5 min
Views92K
132 сервера в одной стойке

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

В этом посте я расскажу о новых серверах DELL PowerEdge серии C (С – от Cloud), а также о том, как благодаря новому оборудованию мы удвоили емкость нашей площадки в ДЦ и при этом сохранили затраты на эксплуатацию на прежнем уровне.
Читать дальше →

Защита для NGINX — NAXSI

Reading time3 min
Views39K

Что такое NAXSI ?


NAXSI = NGINX ANTI XSS & SQL INJECTION
Проще говоря, это файрвол веб-приложений (WAF) для NGINX, помогающий в защите от XSS, SQL-инъекций, CSRF, Local & Remote file inclusions.
Отличительными особенностями его являются быстрота работы и простота настройки. Это делает его хорошей альтернативой например mod_security и апачу.

Зачем нужен NAXSI ?

Очевидно, лучше всего защищаться от вышеперечисленных атак правильно написанным кодом. Но есть ситуации, когда WAF (и в частности naxsi), поможет:
  • Низкое качество кода сайта, при отсутствии возможности/ресурсов все выкинуть и переписать нормально.
  • “Закрытый” код, в котором невозможно исправить ошибки.
  • Неизвестное качество кода в важном для бизнеса участке.


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

gmaps.js — самый легкий способ использования Google Maps API

Reading time2 min
Views49K
Привет!

Расскажу об одной небольшой (~30kb) JS библиотеке для удобной работы с Google Maps API под названием gmaps.js.
Раз уж библиотека создана для ускорения процесса веб-разработки, то и я вас задерживать не буду. Как можно понять из названия, она делает не что иное, как упрощает взаимодействие с API Google Maps. Многие из вас работали с API и, вероятно, каждый раз вам приходилось попотеть, чтобы порыться в документации и реализовать, например, свое собственное описание метки на карте. Или подписаться на событие взаимодействия с картой…
Читать дальше →

Визуальный язык программирования Google Blockly

Reading time1 min
Views56K
Blockly — визуальный язык программирования с веб-интерфейсом. Создание программы осуществляется путём соединения блоков.



Некоторые демки:
Maze — используйте Blockly, чтобы пройти лабиринт.
Code — экспорт программы Blockly в JavaScript, Dart, Python или XML.
Читать дальше →

Единственный способ

Reading time4 min
Views71K
Ральф вошел в помещение ангара №1 в 8:30 утра, как делал это ежедневно уже несколько лет. Его взгляд сразу же устремился к центру зала, где на постаменте, окруженный множеством приборов и паутиной кабелей, находился смысл его работы. Собственно говоря, не только его — миллионов людей по всему миру. Первый инопланетный корабль. Полтора десятилетия назад он совершил аварийную посадку и был частично поврежден, оставив, однако, весьма много материала для изучения. Настоящим чудом стало то, что политики и учёные после этого события не переругались, а смогли организовать эффективное изучение свалившегося с небес подарка. На реверс-инжиниринг корабля были брошены лучшие умы планеты. Ральф, возглавляющий группу изучения приборов связи, стоял в ангаре и в который раз любовался стремительной, похожей на стрелу в полёте, формой корабля. Он вспоминал всё, что случилось за последние годы.
Читать дальше →

Ropes — быстрые строки

Reading time5 min
Views26K
Здравствуй, Хабр.
Большинство из нас так или иначе работает со строками. Этого не избежать — если ты пишешь код, ты обречен каждый день складывать строки, разбивать их на составные части и обращаться к отдельным символам по индексу. Мы давно привыкли что строки — это массивы символов фиксированной длины, а это влечет за собой соответствующие ограничения в работе с ними.
Так, мы не можем быстро объединить две строки — для этого нам потребуется сначала выделить необходимое количество памяти, а потом скопировать туда данные из конкатенируемых строк. Очевидно, что такая операция имеет сложность порядка О(n), где n — суммарная длина строк.
Именно поэтому код

string s = "";
for (int i = 0; i < 100000; i++) s += "a";

работает так медленно.

Хочешь выполнять конкатенацию гигантских строк быстро? Не нравится, что строка требует для хранения непрерывную область памяти? Надоело использовать буферы для построения строк?

Хватит это терпеть!

Разработка и применение модуля PAM для аутентификации в Astra Linux с использованием Рутокен ЭЦП и Рутокен S

Reading time13 min
Views52K


В этой статье мне бы хотелось рассказать о том, как приложения в Linux могут использовать систему Подключаемых Модулей Безопасности (Pluggable Authentication Modules) для прозрачной аутентификации пользователей. Мы немного покопаемся в истории развития механизмов аутентификации в Linux, разберемся с системой настроек PAM и разберем исходный код модуля аутентификации pam_p11, который позволяет проводить аутентификацию пользователей по смарт-картам.
В конце статьи мы рассмотрим на практике настройку и работу модуля аутентификации в сертифицированном по 3 классу защищенности СВТ и 2 уровню контроля отсутствия недекларированных возможностей дистрибутиве Astra Linux для аутентификации по USB-токенам Рутокен ЭЦП и Рутокен S. Учитывая то, что Рутокен S имеет сертификаты ФСТЭК по НДВ 3, а Рутокен ЭЦП по НДВ 4, это решение может применяться в информационных системах, обрабатывающих конфиденциальную информацию, вплоть до информации с грифом «С».
Читать дальше →

Делаем ядерную люстру на 100'000 люмен

Reading time4 min
Views285K
Существует стереотип, что «IT»-шник должен сидеть в полумраке, освещаемый лишь светом монитора. Не знаю как вам, а мне всегда было комфортнее при ярком освещении. Сначала это было 3x100W обычных лампочек, потом 250W люминесцентных ламп, после последнего переезда — одна 500W галогенка… Но этого все-же было недостаточно. Всегда хотелось иметь такое освещение, чтобы не хотелось свет сделать ярче. О создании такой люстры я сейчас и расскажу.
Читать дальше →

Безопасная аутентификация между клиентом и сервером без ввода логина и пароля

Reading time7 min
Views25K
Недавно, при разработке распределенного анализатор трафика, у меня появилась задача спроектировать систему аутентификации между клиентом и сервером. Причем необходимо было спроектировать систему для двух разных ситуаций:

  • когда клиент и сервер общаются в доверенной (локальной) сети;
  • клиент и сервер взаимодействуют через глобальную, незащищенную сеть.

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

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

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

Структуры данных, используемые в Redis

Reading time4 min
Views47K
От переводчика:
Хочу представить вашему вниманию перевод ответа одного из разработчиков Redis, на вопрос о том, какие структуры данных используются внутри Redis. Оригинальную дискуссию вы можете найти на stackoverflow.


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

Но поскольку вы спросили, вот внутренние реализации каждой структуры данных Redis:

  • Строки реализованы с использованием библиотеки динамических строк C, так что мы не платим (говоря асимптотически) за выделение памяти в операциях добавления. Таким образом мы получаем сложность добавления O(N), вместо, например, квадратичной.
  • Списки реализованы как связные списки.
  • Множества и Хэши реализованы как хэш-таблицы.
  • Упорядоченные множества реализованы как списки с пропусками (особый тип сбалансированных деревьев)
Читать дальше →

Information

Rating
Does not participate
Location
Подгорица, Подгорица, Черногория
Date of birth
Registered
Activity

Specialization

Backend Developer, Database Developer
From 500,000 ₽
Golang
Docker
PostgreSQL
Git
Nginx
High-loaded systems
Kubernetes
Linux
MySQL
Redis