Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menggugurkan Keistimewaan dengan Selamat Selepas Mengikat pada Port Keistimewaan dalam Pelayan Web Go?

Bagaimanakah Saya Boleh Menggugurkan Keistimewaan dengan Selamat Selepas Mengikat pada Port Keistimewaan dalam Pelayan Web Go?

Barbara Streisand
Barbara Streisandasal
2024-11-27 02:29:13582semak imbas

How Can I Securely Drop Privileges After Binding to Privileged Ports in a Go Web Server?

Menggugurkan Keistimewaan dalam Go (v1.7)

Tugas untuk mencipta pelayan web tersuai di Golang sering menghadapi keperluan untuk terikat kepada port istimewa seperti port 80. Untuk memastikan keselamatan, adalah penting untuk menggugurkan keistimewaan root selepas mengikat port tersebut. Artikel ini meneroka isu pengguguran keistimewaan dalam Go dan menyediakan penyelesaian.

Dalam versi Go yang terdahulu, menggunakan syscall.SetUid() untuk menggugurkan keistimewaan akan mengembalikan "Tidak disokong." Sebagai alternatif, seseorang boleh mengubah hala port 80 ke port tidak istimewa menggunakan iptables. Walau bagaimanapun, penyelesaian ini membuka kelemahan keselamatan dengan membenarkan proses bukan akar untuk menyamar sebagai pelayan web.

Penyelesaian terletak pada penggunaan gabungan rangkaian rangkaian dan keupayaan panggilan sistem Go. Selepas membuka port istimewa dan menentukan UID, kami boleh mengenal pasti pengguna yang dikehendaki, mendapatkan UID mereka dan menetapkan kedua-dua UID dan GID menggunakan fungsi glibc setgid() dan setuid(). Adalah penting untuk melaksanakan kod ini serta-merta selepas mengikat port, tetapi sebelum memanggil http.Serve.

Coretan kod yang disediakan menunjukkan pendekatan ini. Ia mula-mula memuatkan sijil TLS yang diperlukan dan mendengar pada port istimewa. Jika aplikasi berjalan sebagai akar, ia menurunkan taraf kepada pengguna tertentu dengan menetapkan UID dan GID menggunakan panggilan glibc. Selepas itu, ia mendengar permintaan masuk dan menyediakan kandungan web.

Penyelesaian ini secara berkesan menangani keperluan untuk menggugurkan keistimewaan dalam aplikasi Go. Ia membolehkan penciptaan pelayan web tersuai yang selamat dan teguh tanpa menjejaskan keselamatan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggugurkan Keistimewaan dengan Selamat Selepas Mengikat pada Port Keistimewaan dalam Pelayan Web Go?. 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