Двухфакторная аутентификация (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.
Барбара Лисков заявила, что производные классы должны быть спроектированы так, чтобы их при необходимости можно было заменить своими базовыми классами без потери обратной совместимости.
Смысл в том, что нужно проявлять осторожность при использовании наследования, которое в современном программировании рекомендуют обходить стороной.
Дядюшка Боб (Роберт Мартин) дал очень хорошее определение - функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом