Словарь ИТшника

Словарь постоянно развивается и растёт. В этом словаре собраны термины и сокращения по программированию, безопасности и другим темам.

Двухфакторная аутентификация

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

Двухфакторная аутентификация (2FA) — это метод безопасности, требующий двух разных факторов аутентификации для доступа к системе. Это тип многофакторной аутентификации (MFA).

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

Примеры двухфакторной аутентификации:

- Доверенный номер телефона: пользователь получает по СМС код проверки.

- Приложение для смартфона: пользователь одобряет запрос аутентификации перед входом в систему с помощью приложения для смартфона.

- Биометрия: пользователь использует биометрический фактор, такой как отпечаток пальца или сканирование лица.

Двухфакторная аутентификация затрудняет злоумышленникам доступ даже если он украдёт пароль. 

Дефейс

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

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

В последнее время Deface встречается не так часто, как в 90-е. Эта атака больше выглядит как самоутверждение хакера – доказательство его возможностей. 

Один из самых известных случаев относится ко второй половине 1990-х годов, когда была взломана домашняя страница Центрального разведывательного управления (ЦРУ). В течение трёх дней на сайте висел заголовок «Центральное управление идиотов»

Дженерики

Программирование

Generics в C# —  это возможность создавать шаблоны кода, которые работают с разными типами данных, не теряя типовой безопасности. Вместо того чтобы писать один и тот же код для каждого типа данных, вы пишете один универсальный код, а конкретный тип подставляется при использовании. Это делает код более гибким, безопасным и переиспользуемым, без необходимости писать отдельную реализацию для каждого типа данных.

Подробнее читаем про Generic.

Дядюшка Боб

Программирование

Роберт Сесил Мартин  (Robert Cecil Martin), также известный как Дядя Боб (англ. Uncle Bob) — американский инженер и программист, консультант и автор в области разработки ПО. 

В 2001 он организует встречу группы, которая создала гибкую методологию разработки из техник экстремального программирования.

Автор книг:

- Быстрая разработка программ. Принципы, примеры, практика

- Чистый код. Создание, анализ и рефакторинг

- Идеальный программист. Как стать профессионалом разработки ПО

- Принципы, паттерны и методики гибкой разработки на языке C#

- Гибкая разработка программ на Java и C++. Принципы, паттерны и методики

- Чистая архитектура. Искусство разработки программного обеспечения

- Чистый Agile. Основы гибкости

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

Красная команда

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

Красная команда - атакующая группа безопасников. Более подробно читаем тут Red Team

Многофакторная аутентификация

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

MFA или Multi-factor authentication – это метод контроля доступа к чему-либо в котором пользователю для получения доступа к информации необходимо предъявить более одного «доказательства механизма аутентификации». В качестве проверки аутентификации используется не только пароль, но и одно/несколько из следующих пунктов:

- Знание — информация, которую знает субъект. Например пароль, ПИН-код, код, контрольное слово и так далее.

- Владение — вещь, которой обладает субъект. Например, электронная или магнитная карта, токен, флеш-память.

- Свойство, которым обладает субъект. Например биометрия, природные уникальные отличия: лицо, отпечатки пальцев (папиллярные узоры), радужная оболочка глаз, последовательность ДНК.

Пентест

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

Пентест (penetration test или тест на проникновение) — это контролируемая проверка безопасности систем, при которой специалисты намеренно пытаются найти и эксплуатировать уязвимости так, как это сделал бы хакер.

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

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

Виды пентестов:

- Black box — тестировщик ничего не знает о системе (как внешний хакер).

- White box — у пентестера есть исходники, документация и доступы (как инсайдер или для глубокого анализа).

- Gray box — частичная информация (компромисс между глубиной и реалистичностью).

Полиморфизм

Программирование

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

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

class Animal
{
    public virtual void Speak()
    {
        Console.WriteLine("Базовый звук животного");
    }
}

class Dog : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Гав");
    }
}

class Cat : Animal
{
    public override void Speak()
    {
        Console.WriteLine("Мяу");
    }
}

class Program
{
    static void MakeSound(Animal animal)
    {
        animal.Speak(); 
    }

    static void Main()
    {
        Animal a1 = new Dog();
        Animal a2 = new Cat();

        MakeSound(a1);  // Гав
        MakeSound(a2);  // Мяу
    }
}

В этом примере мы создаём три класса - базовый Animal и два потомка - Dog (Собака) и Cat (Кошка). Собака и кошка делают разные звуки, но чуть ниже в методе MakeSound нам всё равно, какого животного нам передали в качестве параметра. Мы просто вызываем метод Speak и звук будет разный, в зависимости от того, какой именно объект мы получили - кошка или собака

Ключевые моменты:

- Основан на наследовании и переопределении методов.

- Может решаться во время выполнения (динамический полиморфизм).

Принцип единой ответственности

Программирование

Один из принципов SOLID и это первая буква S в названии принципа - Single Responsibility Principle. Более подробно читаем в Single Responsibility Principle

Принцип замещения Лисков

Программирование

Это Liskov Substitution Principle или LSP. Это третья буква в знаменитом сокращении SOLID. 

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

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

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

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне