[go] net/http 패키지를 사용한 보안 헤더 설정

Go 언어로 웹 애플리케이션을 개발할 때 보안을 강화하기 위해 HTTP 헤더를 적절하게 설정하는 것이 매우 중요합니다. 이번에는 Go 언어에서 net/http 패키지를 사용하여 웹 애플리케이션에 보안 헤더를 추가하는 방법에 대해 알아보겠습니다.

1. net/http 패키지를 이용한 웹 서버 생성

가장 먼저, net/http 패키지를 이용하여 간단한 웹 서버를 만들어보겠습니다.

package main

import (
	"fmt"
	"net/http"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello, world!")
}

func main() {
	http.HandleFunc("/", handler)
	http.ListenAndServe(":8080", nil)
}

위의 코드에서는 “/”에 해당하는 요청을 처리하는 핸들러 함수를 작성하고, 이를 이용하여 8080 포트에서 웹 서버를 실행하고 있습니다.

2. 보안 헤더 설정

이제 HTTP 헤더에 보안 관련 항목을 추가해보겠습니다. 보안 헤더를 설정하기 위해서는 ServeHTTP 메서드를 이용하여 미들웨어를 구현할 수 있습니다.

func secureHeaderMiddleware(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("X-Frame-Options", "DENY")
        w.Header().Set("X-XSS-Protection", "1; mode=block")
        w.Header().Set("X-Content-Type-Options", "nosniff")
        next.ServeHTTP(w, r)
    })
}

func main() {
	http.Handle("/", secureHeaderMiddleware(http.HandlerFunc(handler)))
	http.ListenAndServe(":8080", nil)
}

위의 코드에서는 secureHeaderMiddleware 미들웨어 함수를 만들어서 각종 보안 관련 헤더를 설정하고, 기존 핸들러 함수를 래핑하여 보안 헤더를 추가하고 있습니다.

3. 웹 서버 실행 및 테스트

코드를 작성한 후, 터미널에서 해당 Go 파일을 실행하여 미들웨어를 통해 보안 헤더가 설정된 웹 서버가 제대로 실행되는지 확인해보세요. 그리고 브라우저 개발자 도구를 이용하여 해당 웹 서버의 응답 헤더를 확인하면 설정한 보안 헤더를 확인할 수 있습니다.

이렇게 Go 언어에서 net/http 패키지를 이용하여 웹 애플리케이션에 보안 헤더를 추가하는 방법에 대해 알아보았습니다. 보안 헤더 설정을 통해 웹 애플리케이션의 보안을 강화할 수 있으니, 실제 웹 애플리케이션 개발 시에 적극 활용해보세요.

참고문헌: