HeadlinesBriefing HeadlinesBriefing.com

Современное веб-приложение на C с CGI

Hacker News •
×

В 1994 году динамический сайт означал написание программы на C, размещение её в каталоге cgi-bin и позволение Apache запускать её через fork при каждом запросе. Тридцать два года спустя автор выпустил коммерческий веб-продукт marketyour.games, использующий по сути ту же технологию. Продукт включает учётные записи пользователей, поисковую панель для создателей контента, папки для их организации, платежи через Stripe и транзакционные письма через Postmark. Он следует принципу прогрессивного улучшения и не требует JavaScript.

Стек называется BCHS: OpenBSD, C, httpd и SQLite. Здесь нет фреймворка, языка шаблонов и отдельного сервера баз данных. Программа на C читает переменные окружения CGI и выводит HTML напрямую. Бинарный файл статически скомпонован и развёртывается заменой одного файла, поэтому новые запросы сразу используют новую версию без перезапуска сервера и простоя. Функции pledge и unveil в OpenBSD помогают защитить программу, а httpd обслуживает контент из chroot. Зависимости ограничены libcurl для исходящих запросов, libsodium для идентификаторов, хеширования паролей и проверки webhook Stripe, а также libcjson для разбора JSON. Чистая сборка занимает несколько секунд.

Автор ценит CGI за его основы, а не за фреймворки. Спецификация 1.1, опубликованная в 2004 году, не менялась, и для понимания CGI достаточно знать HTTP. Он не зависит от языка и платформы и сохраняет чёткое разделение ответственности: один веб-сервер напрямую вызывает бизнес-логику, а не проксирует запросы на отдельный сервер приложений. Приложения представляют собой обычные программы, которые можно запускать из командной оболочки и отлаживать с помощью gdb.

Такой подход также даёт минимальный риск для цепочки поставок, что особенно важно на фоне недавних атак на репозитории пакетов. При таком малом числе зависимостей меньше вероятность попадания скомпрометированных пакетов. Автор утверждает, что упадок CGI был оправдан в 2004 году, но не выдерживает критики в 2026 году, и современное веб-приложение действительно можно написать на C.

Источник: Hacker News · Сводку подготовил HeadlinesBriefing