Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Aplikasi Go Boleh Menggugurkan Keistimewaan Dengan Selamat Selepas Diikat ke Port 80?

Bagaimanakah Aplikasi Go Boleh Menggugurkan Keistimewaan Dengan Selamat Selepas Diikat ke Port 80?

Patricia Arquette
Patricia Arquetteasal
2024-11-21 05:40:16589semak imbas

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

Golang Dropping Privileges (v1.7)

Dalam usaha untuk mencipta pelayan web tersuai, anda telah menghadapi cabaran untuk menggugurkan keistimewaan sambil mengikat ke port 80, yang memerlukan akses root. Walaupun penyelesaian alternatif mungkin melibatkan penghalaan semula port 80, ini menimbulkan risiko keselamatan. Bagaimanakah anda boleh menavigasi isu ini dengan berkesan?

Menurut respons yang diberikan, Go menawarkan penyelesaian menyeluruh dengan membenarkan anda membuka port, mengesan UID dan jika 0, cari pengguna yang dikehendaki dan dapatkan semula UID. Selepas itu, anda boleh menggunakan panggilan glibc untuk menetapkan UID dan GID proses.

Adalah penting untuk menekankan kepentingan memanggil kod setuid serta-merta selepas mengikat port. Tidak seperti http.ListenAndServe(TLS)? fungsi helper, anda perlu menubuhkan net.Listener anda secara bebas dan menggunakan setuid post port binding tetapi sebelum memulakan http.Serve.

Coretan kod yang disediakan menunjukkan pendekatan ini dengan berkesan. Ia termasuk pelaksanaan SSL dan membolehkan anda berjalan dalam mod "pembangunan" dengan UID bukan akar pada port tinggi tanpa menghadapi komplikasi. Ingat untuk memperibadikan fail konfigurasi dengan menetapkan alamat, port, pengguna, kumpulan dan nama fail TLS.

Atas ialah kandungan terperinci Bagaimanakah Aplikasi Go Boleh Menggugurkan Keistimewaan Dengan Selamat Selepas Diikat ke Port 80?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn