HeadlinesBriefing HeadlinesBriefing.com

Application web moderne en C avec CGI

Hacker News •
×

En 1994, un site web dynamique consistait à écrire un programme en C, à le placer dans un répertoire cgi-bin et à laisser Apache le forker à chaque requête. Trente-deux ans plus tard, l'auteur a lancé un produit web commercial, marketyour.games, reposant fondamentalement sur la même technologie. Le produit comprend des comptes utilisateurs, un tableau de bord de recherche pour les créateurs de contenu, des dossiers pour les organiser, des paiements via Stripe et des e-mails transactionnels via Postmark. Il suit le principe de l'amélioration progressive et ne nécessite aucun JavaScript.

La pile technique est BCHS : OpenBSD, C, httpd et SQLite. Il n'y a ni framework, ni langage de templates, ni serveur de base de données séparé. Le programme C lit les variables d'environnement CGI et produit directement du HTML. Le binaire est lié statiquement et déployé en remplaçant un seul fichier : les nouvelles requêtes utilisent simplement la nouvelle version, sans redémarrage du serveur ni interruption de service. Les fonctions pledge et unveil d'OpenBSD contribuent à sécuriser le programme, et httpd sert les contenus depuis un chroot. Les dépendances se limitent à libcurl pour les requêtes sortantes, libsodium pour les identifiants, le hachage des mots de passe et la vérification des webhooks Stripe, et libcjson pour l'analyse JSON. Une compilation complète ne prend que quelques secondes.

L'auteur apprécie CGI pour ses fondamentaux plutôt que pour les frameworks. La spécification 1.1, publiée en 2004, n'a pas changé, et comprendre HTTP suffit à comprendre CGI. Elle est indépendante du langage et de la plateforme, et préserve une séparation claire des responsabilités : un seul serveur web appelle directement la logique métier, au lieu de faire du reverse proxy vers un serveur d'applications distinct. Les applications sont des programmes ordinaires qu'on peut exécuter depuis un shell et déboguer avec gdb.

Cette approche offre également un risque minimal sur la chaîne d'approvisionnement, un avantage notable au vu des récentes attaques contre les dépôts de paquets. Avec si peu de dépendances, l'exposition à des paquets compromis est réduite. L'auteur soutient que le déclin de CGI était justifié en 2004, mais qu'il ne tient plus en 2026, et qu'une application web moderne peut effectivement être écrite en C.

Source: Hacker News · Résumé par HeadlinesBriefing