[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 패키지를 이용하여 웹 애플리케이션에 보안 헤더를 추가하는 방법에 대해 알아보았습니다. 보안 헤더 설정을 통해 웹 애플리케이션의 보안을 강화할 수 있으니, 실제 웹 애플리케이션 개발 시에 적극 활용해보세요.
참고문헌:
- https://pkg.go.dev/net/http#pkg-examples
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers