TGViewer
Just code IT Just code IT @justcodeit_channel · 1.32K subscribers
Post #85 2.56K
Хардкорные инструменты для WEB-разработки

Мы привыкли, что бэкенд для WEB пишут на высокоуровневых языках программирования со сборкой мусора: Python, Go, JavaScript, PHP, Java и других. Появляются новые фреймворки, упрощающие типовые задачи разработки и улучшающие безопасность решений, тулинг. Таким образом, WEB-бэкенд — отдельная область знания со своей экосистемой, стандартами, типовыми языками и инструментами.

Но возможно ли разработать относительно безопасное WEB-приложение с использованием таких хардкорных инструментов, как язык C? Ответ на этот вопрос в полушутливой форме дает Кристапс Джонсонс (Kristaps Dzonsons).

Кристапс предлагает использовать стек технологий под названием BCHS: BSD, C, httpd, SQLite. Наверняка в названии вы уловили шутливую аналогию с LAMP: Linux, Apache, MySQL, PHP. Но подождите, разве C подходит для таких задач? WEB-приложения оперируют множеством строк (например, JSON объектами), а в этом язык C не слишком хорош — сказывается ручное управление памятью. Более того, чтобы разработать действительно безопасное приложение на C, требуется серьезная инженерная дисциплина, большой опыт системной разработки и глубокое знание стандарта языка — статический и динамический анализ способны отловить далеко не все ошибки и уязвимости.

Для достижения такой, казалось бы, странной цели, Кристапс предлагает использовать метод разработки, похожий на Secure by design. Его подход подразумевает разбиение приложения на независимые процессы, общающиеся через примитивы межпроцессного взаимодействия. При этом, привилегии этих процессов сбрасываются ровно до того уровня, который необходим им для функционирования. OpenBSD позволяет строить такие решения благодаря системным вызовам pledge и unveil. FreeBSD же предоставляет гибкий механизм Capsicum.

Также Кристапс приводит множество способов, помогающих снизить вероятность ошибки в критическом коде: использование подмножества языка, строгие правила кодирования (SEI CERT), генерация кода, статический и динамический анализ, фаззинг.

Таким образом, благодаря правильной архитектуре, верно выбранным принципам проектирования безопасных систем и хорошему тулингу, удается построить быстрые и безопасные системы даже на столь небезопасном языке, как C.

#digest
learnbchs.org BCHS stack BSD, C, httpd, SQLite: an open software stack for web applications
  • 👍 8
More from @justcodeit_channel
  1. Aug 1, 20243D ландшафт в 256 байт Существуют разные виды intro — небольших динамических сцен, генерир…
  2. Jul 17, 2024Практическое погружение в метакомпиляторы Практически у каждого из наших читателей с образ…
  3. Jul 3, 2024Как создаются 64 intro Уверены, многие наши читатели слышали про демосцену — вид цифрового…
  4. Jun 14, 2024Создание программы 3D моделирования за неделю Недавно обнаружили на просторах сети занимат…
  5. May 28, 2024VPN, созданный по принципам Secure-by-design Много кто пишет про подход SbD (Secure-by-des…
  6. Apr 24, 2024Наследие Никлауса Вирта Как известно, 1 января 2024 года не стало Никлауса Вирта (Niklaus…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →