[go] go 언어에서의 html/escape 패키지와 웹 테스트 자동화
Go 언어는 효율적이고 강력한 웹 어플리케이션을 개발하기 위한 도구로 각광받고 있습니다. 이번 글에서는 Go의 내장 패키지 중 하나인 html
을 사용하여 HTML escaping 기능을 알아보고, net/http/httptest
패키지를 이용하여 웹 테스트 자동화를 하는 방법에 대해 살펴보겠습니다.
HTML/Escape 패키지
HTML/Escape 패키지는 문자열을 HTML이나 XML 문서에 삽입하기 전에 안전하게 이스케이핑하거나 역이스케이핑할 수 있는 기능을 제공합니다.
다음은 html
패키지의 사용 예시입니다.
package main
import (
"fmt"
"html"
)
func main() {
str := `<script>alert("XSS attack!");</script>`
escapedStr := html.EscapeString(str)
fmt.Println(escapedStr)
}
위 예시에서는 <script>
태그를 안전하게 이스케이핑하여 출력됩니다.
HTML/Escape 패키지를 사용하면 웹 어플리케이션에서 발생할 수 있는 크로스 사이트 스크립팅(XSS) 공격을 방지할 수 있습니다.
웹 테스트 자동화
웹 어플리케이션을 개발하다 보면 테스트가 필수적입니다. Go 언어에서는 net/http/httptest
패키지를 통해 웹 핸들러를 테스트할 수 있습니다.
다음은 httptest
패키지의 사용 예시입니다.
package main
import (
"net/http"
"net/http/httptest"
"testing"
)
func TestHandler(t *testing.T) {
handler := func(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
w.Write([]byte("OK"))
}
req := httptest.NewRequest("GET", "http://example.com/foo", nil)
w := httptest.NewRecorder()
handler(w, req)
resp := w.Result()
if resp.StatusCode != http.StatusOK {
t.Errorf("Expected status code %d, got %d", http.StatusOK, resp.StatusCode)
}
}
위 예시에서는 httptest
패키지를 이용하여 웹 핸들러를 테스트하는 방법을 보여줍니다.
웹 테스트 자동화를 통해 웹 어플리케이션의 정확성을 확인하고, 코드 변경에 따른 영향을 신속하게 파악할 수 있습니다.
이상으로, Go 언어의 html
패키지를 활용하여 XSS 공격으로부터 웹 어플리케이션을 보호하고, httptest
패키지를 이용하여 웹 테스트를 자동화하는 방법에 대해 알아보았습니다.