Pull to refresh
3
0
Крючков Константин @2ks

AppSec Lead

Send message

Двенадцатифакторная модель создания CLI-приложений

Reading time11 min
Views8.1K

Современному пользователю сложно представить себе взаимодействие с операционной системой без мышки или пальца на экране. Интерфейс однозначно ассоциируется с чем-то графическим и оконным, основанным на пользовательском опыте  миллионов людей за несколько десятилетий. Это очень удобно, однако в разработке софта есть ещё удалённые уголки Вселенной, где для решения сложных комплексных задач просто нет готовых решений с графическими интерфейсами. Тут на помощь приходит старая добрая командная строка (Command Line Interface, CLI). Поводом для перевода и публикации этой статьи стал интерес команды Artezio к повышению удобства, читаемости и возможности поддержки CLI в части разработки.  В конце концов это такой же интерфейс как и графический, он тоже должен быть удобным.  Мы очень надеемся, что эти знания окажутся полезными для читателей блога.

Читать далее
Total votes 41: ↑41 and ↓0+41
Comments2

Анатомия каналов в Go

Reading time34 min
Views181K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.


Что такое каналы?


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


Создание канала


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

Читать дальше →
Total votes 22: ↑22 and ↓0+22
Comments7

Как я ищу себе сотрудников в команду DevSecOps и AppSec

Level of difficultyEasy
Reading time7 min
Views7.2K

Привет! Меня зовут Михаил Синельников. Я DevSecOps TeamLead в РСХБ‑Интех. Тружусь в ИТ‑сфере уже 25 лет, немалую часть из которых — на руководящих должностях. Сегодня расскажу, как я ищу специалистов к себе в команду DevSecOps и AppSec, на что обращаю внимание и как общаюсь с соискателями, которые на собеседовании пытаются приукрасить собственные достижения.

Читать далее
Total votes 21: ↑16 and ↓5+20
Comments8

Как вырастить солёную пирамидку

Reading time11 min
Views46K

Да кому нужна эта обычная скучная соль? Превращаем мелкие белые крупинки в потрясающие пирамидальные кристаллы в домашних условиях.

Читать далее
Total votes 185: ↑182 and ↓3+226
Comments72

Создание минимального Docker-контейнера для Go-приложений

Reading time4 min
Views49K
Привет, Хабр! Предлагаю вашему вниманию перевод статьи основателя сервиса Meetspaceapp Nick Gauthier «Building Minimal Docker Containers for Go Applications».

Время чтения: 6 минут

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

Часть 1: Наше «приложение»


Для тестирования нам потребуется какое-нибудь маленькое приложение. Давайте будем фетчить google.com и выводить размер HTML.

package main

import (
    "fmt"
    "io/ioutil"
    "net/http"
    "os"
)

func main() {
    resp, err := http.Get("https://google.com")
    check(err)
    body, err := ioutil.ReadAll(resp.Body)
    check(err)
    fmt.Println(len(body))
}

func check(err error) {
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
}

Если мы запустимся, то получим только какое-то число. У меня вышло около 17К. Я целенаправленно решил использовать SSL, но причину объясню позднее.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments10

10 причин не участвовать в некоторых IT-конференциях

Level of difficultyEasy
Reading time7 min
Views7.5K

Привет! У нас тут накопился неплохой опыт в плане работы с конференциями со всех точек зрения — как организатора своих собственных событий, так и активного участия в больших регулярных IT-конференций. Собственно, им мы с вами и поделимся.

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

Расскажем о самых частых косяках, отбивающих у компаний желание вообще идти на конференции, поговорим про еду на площадке и про жару, и разберём не самые очевидные промахи организаторов. А если вы захотите поделиться в комментах своим опытом и предложениями, будем только рады. 

Вдруг нам всем вместе получится сделать мир отечественных IT-событий немного лучше.

Читать далее
Total votes 36: ↑30 and ↓6+32
Comments14

Обеспечение безопасности Frontend приложений

Level of difficultyEasy
Reading time13 min
Views16K

Безопасность является важным фактором при создании frontend приложений, поскольку они часто являются отправной точкой для атак. Я решил собрать в одну статью основные меры, которых стоит придерживаться или о которых хотя бы нужно задуматься.

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

Читать далее
Total votes 11: ↑10 and ↓1+14
Comments6

«Для меня все люди — пользователи». Из регионального сисадмина в UX-дизайнера в Москве

Reading time8 min
Views1.3K

Одна из наших сотрудниц — Валентина Жукова — прошла необычный путь от специалиста по АСОИУ и сисадмина до дизайнера пользовательских интерфейсов. Сейчас у неё своя растущая команда, весьма разносторонний опыт и множество интересных наблюдений. В этом интервью Валя рассказала о том, как подбирает сотрудников, растит их и выявляет лидеров, а также поделилась полезными советами и ресурсами для развития в UX/UI-дизайне.

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments0

Как в рутине задач находить время на disrupt

Level of difficultyMedium
Reading time10 min
Views4.8K

Меня зовут Иван Кесель, я CPO в Домклик, лидер нескольких команд. Давайте поговорим про disrupt. Во-первых, разберёмся, что это за англицизм. Во-вторых, на примере из практики Домклика я покажу, как мы запускаем disrupt-решения. И в-третьих, дам вам десять подробных практических советов, которые нам помогают. 

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments1

5 млн долларов за строчку кода: подробный разбор сбоя сервисов Datadog

Level of difficultyMedium
Reading time24 min
Views13K

В марте сервисы Datadog не работали более суток. Что пошло не так, как отреагировала команда инженеров, и что можно извлечь из этого инцидента? Это перевод эксклюзивного исследования, которое провел Гергели Орош (Gergely Orosz), консультант mobile.dev, автор нескольких книг по работе с инфраструктурой, в прошлом — инженер в Uber, Skype, Microsoft. 

Читать далее
Total votes 46: ↑46 and ↓0+46
Comments11

Burp Suite — сканирование веб-приложений на основе JWT

Reading time7 min
Views6K

Привет, Хабр! Снова с вами те, кто отчитываются, что в вашем приложении не хватает заголовков безопасности, а именно инженеры по динамическому анализу. В нашей прошлой статье мы описали плагин для OWASP ZAP, упрощающий авторизацию на основе JWT. А сейчас хотим рассказать о том, как настроить подобную магию авторизации в популярном инструменте Burp Suite Pro.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments0

Избранное: ссылки по IT безопасности

Reading time3 min
Views110K




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




Читать дальше →
Total votes 92: ↑86 and ↓6+80
Comments18

Обзор площадки для тестирования веб-уязвимостей OWASP Top-10 на примере bWAPP

Reading time6 min
Views66K
Привет, Хабр!

В этой статье предлагаю читателю ознакомится с уязвимостями веб-приложений (и не только), по классификации OWASP Top-10, и их эксплуатацией на примере bWAPP.

image

Читать дальше →
Total votes 19: ↑18 and ↓1+17
Comments8

Самый частый шаблон SQL инъекций в РНР — бесполезное экранирование символов

Reading time2 min
Views35K
По роду своей деятельности, мне приходится выполнять аудиты безопасности исходного кода веб-приложений.
Много веб-приложений и много кода…

В этой статье я хотел бы поделиться одной простой (очень простой) истиной и статистикой, которые вывел и многократно проверил в течении трех последний лет просмотра тонн РНР кода.

Не секрет, что уязвимости внедрения операторов СУБД (SQL injections) являются самыми распространенными из всех серверных уязвимостей веб-приложений. Есть платформы и фреймворки, где такие вещи практически полностью исключены, например ORM'ом и прочим. Но статистика упорно говорит нам об абсолютном преобладании на просторах Интернета веб-приложений с простыми конкатенированными SQL запросами. Кроме того, есть случаи, где ORM вообще применим быть не может. Например, когда от пользовательских данных должны зависеть не только параметры выражений, но и сама логика запроса на уровне операторов.
Читать дальше →
Total votes 90: ↑78 and ↓12+66
Comments148

Немного о связываемых переменных (prepared statements)

Reading time6 min
Views58K
Если бы мне пришлось писать книгу о том, как создавать немасштабируемые приложения Oracle, первая и единственная ее глава называлась бы «Не используйте связываемые переменные».
Том Кайт, вице-президент Oracle

Недавно на Хабре появилась статья от AlexanderPHP «SQL injection для начинающих. Часть 1». По ее содержимому и комментарием к ней может создаться впечатление, что у многих разработчиков нет понятия, что такое связываемые переменные, зачем ими следует пользоваться и какие преимущества они дают. Попытаюсь в данной статье пролить небольшой свет на данные вопросы.
Читать дальше →
Total votes 58: ↑55 and ↓3+52
Comments196

Эмуляция сетевых проблем с помощью WANem

Reading time3 min
Views29K
Картинка для привлечения внимания Недавно один из заказчиков TestLab² пожелал узнать, как будет работать его инсталлятор (с закачкой всякого на лету) на разных каналах. Внезапно первые подходы показали, что нам везет и обычные edge, umts и wimax-каналы (не говоря о проводных) в нашей округе как-то уж очень хорошо работают.
Чтобы создать тяжелые условия мы нашли и применили специализированный инструмент WANem, о котором я расскажу под катом.
Читать дальше →
Total votes 46: ↑46 and ↓0+46
Comments20

Как подружить Truecrypt loader и Grub 2?

Reading time5 min
Views23K
image
Сегодня я расскажу, как подружить загрузчик от программы шифрования Truecrypt и никсовский загрузчик Grub 2. Такая необходимость может возникнуть (и неотвратимо возникает) при попытке установить рядом на одном жёстком диске ОС Windows, зашифрованную бесплатной программой Truecrypt, и unix-образную операционную систему, например Ubuntu.

Основная проблема заключается в том, что Grub не умеет работать с ключами truecrypt и не может расшифровать виндошный раздел, а truecrypt loader не [всегда] умеет загружать другие операционные системы. Существует два основных подхода к решению задачи.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments19

Information

Rating
Does not participate
Works in
Registered
Activity