ホームページ  >  記事  >  バックエンド開発  >  Go アプリケーションはポート 80 にバインドした後に特権を安全にドロップするにはどうすればよいですか?

Go アプリケーションはポート 80 にバインドした後に特権を安全にドロップするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-21 05:40:16527ブラウズ

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

Golang の権限の削除 (v1.7)

カスタム Web サーバーを作成しようとして、権限を削除するという課題に遭遇しました。ポート 80 にバインドしている間、これには root アクセスが必要です。代替ソリューションにはポート 80 の再ルーティングが含まれる場合がありますが、これにはセキュリティ上のリスクが伴います。この問題を効果的に解決するにはどうすればよいですか?

提供された応答によると、Go はポートを開いて UID を検出し、それが 0 の場合は目的のユーザーを検索して取得できるようにすることで、包括的なソリューションを提供します。 UID。その後、glibc 呼び出しを利用してプロセスの UID と GID を設定できます。

ポートをバインドした直後に setuid コードを呼び出すことの重要性を強調することが重要です。 http.ListenAndServe(TLS) とは異なりますか?ヘルパー関数を使用するには、net.Listener を独立して確立し、http.Serve を初期化する前に setuid ポスト ポート バインディングを呼び出す必要があります。

提供されたコード スニペットは、このアプローチを効果的に示しています。これには SSL 実装が含まれており、複雑な問題が発生することなく、上位ポート上で非ルート UID を使用して「開発」モードで実行できるようになります。アドレス、ポート、ユーザー、グループ、および TLS ファイル名を設定して、構成ファイルをパーソナライズしてください。

以上がGo アプリケーションはポート 80 にバインドした後に特権を安全にドロップするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。