Идеи и инсайты · Страница 7

Исследуем AI-first разработку, кодовые ограждения и архитектуру одноразовости.

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

Стандартная библиотека Rust предоставляет окружающее файловое полномочие каждой зависимости. cap-std заменяет его API на основе полномочий, которые заставляют код доказывать, что у него есть право доступа к пути, прежде чем он откроет его.

Ваш сервис — невольный пособник: как работают атаки Confused Deputy

Атака Confused Deputy заставляет привилегированный сервис использовать свои полномочия против себя. Вот как злоумышленники эксплуатируют неявное доверие и почему capability-based security — это решение.

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

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

Хватит выбрасывать ошибки, которые не видит ваша система типов

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

Компилятор должен отлавливать недостающие case'ы состояний, а не ваша команда QA

Добавить новое состояние в машину легко. Помнить об обновлении каждого switch — нет. Вот как заставить TypeScript отказаться компилироваться, если вы забудете case.

Число — это не просто число: как заставить компилятор ловить баги с единицами измерения

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