Maison  >  Article  >  développement back-end  >  Comment les applications Go peuvent-elles supprimer les privilèges en toute sécurité après s'être liées au port 80 ?

Comment les applications Go peuvent-elles supprimer les privilèges en toute sécurité après s'être liées au port 80 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-21 05:40:16527parcourir

How Can Go Applications Safely Drop Privileges After Binding to Port 80?

Golang abandonnant les privilèges (v1.7)

Dans le but de créer un serveur Web personnalisé, vous avez rencontré le défi de supprimer des privilèges tout en se liant au port 80, ce qui nécessite un accès root. Même si des solutions alternatives peuvent impliquer le réacheminement du port 80, cela présente des risques pour la sécurité. Comment gérer efficacement ce problème ?

Selon la réponse fournie, Go propose une solution complète en vous permettant d'ouvrir le port, de détecter l'UID, et s'il est 0, de rechercher l'utilisateur souhaité et de récupérer le UID. Par la suite, vous pouvez utiliser les appels glibc pour définir l'UID et le GID du processus.

Il est crucial de souligner l'importance d'appeler le code setuid immédiatement après avoir lié le port. Contrairement à http.ListenAndServe(TLS) ? fonction d'assistance, vous devrez établir votre net.Listener indépendamment et invoquer la liaison de port post setuid mais avant d'initialiser http.Serve.

L'extrait de code fourni démontre efficacement cette approche. Il inclut l'implémentation SSL et vous permet de fonctionner en mode « développement » avec un UID non root sur un port élevé sans rencontrer de complications. N'oubliez pas de personnaliser le fichier de configuration en définissant les noms d'adresse, de port, d'utilisateur, de groupe et de fichier TLS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn