Паттерн Декоратор — специальный способ организации модулей в программе, который позволяет подставить какую-то новую функцию прямо в середину цепочки вызовов, тем самым чуть-чуть подкорректировав поведение.
Например, в реальном мире очки для чтения это декоратор. Вы ставите их между вашими глазами и текстом. Глобально взаимодействие ваших глаз и текста не меняется: отражённые световые лучи от страницы книги попадают в ваши зрачки, что с очками, что без них. Но очки располагаются посередине: они принимают лучи на вход и преломляют их, передавая дальше вам в глаза уже изменёнными.
Важной особенностью является тот факт, что очки можно снять. Они не требуют ни модификации вашего тела, ни модификации книги. Вообще никакие условия не нужны, кроме наличия самих очков. А если вы в линзах, то внешний наблюдатель может даже этого не знать.
Класс-декоратор должен быть спроектирован так, чтобы не требовать никаких изменений в объектах, с которыми он работает. Его можно отключить, чаще всего буквально закомментировав одну строку.
В примере ниже программа выведет текст "Привет, мир, в натуре.", и вот это дополнение в конце как раз дописано декоратором. Можно убрать или закомментировать подчёркнутую строчку, не трогая остальной код, для всех внешних вызовов сигнатуры останутся теми же самыми, но выводиться будет уже просто "Привет, мир".
В декораторы можно прятать логику, которую буквально навешивают поверх основной функции программы. Например, проверку прав на выполнение операции. Перевод на другой язык, логирование, поддержку обратной совместимости при обновлении и так далее.
#dev
👨💻 Attacking Policy.
• Open Policy Agent — это open-source-инструмент контроля доступа, основанный на политиках, который создан в 2016 году и с тех пор стабильно развивается. Сейчас он входит в каталог дипломированных проектов Cloud Native Computing Foundation (CNCF). Его используют Netflix, Pinterest, TripAdvisor и другие компании.
• В этой статье перечислены определенные векторы атак, которые могут быть вызваны неправильной конфигурацией Open Policy Agent:
• Allowed Repositories;
• Automount Service Account Token for Pod;
• Block Endpoint Edit Default Role;
• Block Services with type LoadBalancer;
• Block NodePort;
• Block Wildcard Ingress;
• Disallow Interactive TTY Containers;
• Step-by-Step Instructions;
• Allow Privilege Escalation in Container;
• Step-by-Step Instructions;
• Privileged Container;
• Read Only Root Filesystem;
• Host Networking Ports;
• App Armor;
• SELinux V2;
• Resources.
#devsecops
👩💻 Attacking NodeJS Application.
- Use flat Promise chains;
- Set request size limits;
- Do not block the event loop;
- Perform input validation;
- Perform output escaping;
- Perform application activity logging;
- Monitor the event loop;
- Take precautions against brute-forcing;
- Use Anti-CSRF tokens;
- Prevent HTTP Parameter Pollution;
- Do not use dangerous functions;
- Use appropriate security headers;
- Listen to errors when using EventEmitter;
- Set cookie flags appropriately;
- Avoid eval(), setTimeout(), and setInterval();
- Avoid new Function();
- Avoid code serialization in JavaScript;
- Use a Node.js security linter;
- References.
#devsecops
👨💻 Attacking APIs \ Атаки на API.
• Программный интерфейс приложений (API) - фундаментальный элемент инноваций в современном, движимом приложениями мире. API - важная составляющая современных мобильных, SaaS и веб приложений, используемая в клиентских, партнерских и внутренних приложениях от банковской сферы, сфер розничных продаж и логистики до интернета вещей, автономных автомобилей и умных городов.
• По своей природе API раскрывают логику приложения и критичные данные, например, персональные данные, именно поэтому API все чаще становятся целью злоумышленников. Стремительные инновации невозможны без безопасных API. В этой статье рассматриваются общие векторы атак на API и приводятся примеры безопасной разработки.
➡️https://blog.devsecopsguides.com/attacking-apis
#devsecops
👨💻 Attacking Pipeline.
• DevOps resources compromise;
• Control of common registry;
• Direct PPE (d-PPE);
• Indirect PPE (i-PPE);
• Public PPE;
• Changes in repository;
• Inject in Artifacts;
• User/Services credentials;
• Typosquatting docker registry image;
• Resources.
#DevOps#DevSecOps