[go] go 언어에서의 html/escape 패키지와 URL 처리

Go 언어는 안정적이고 강력한 표준 라이브러리를 제공합니다. 여기에는 HTML 특수 문자를 이스케이프하거나 URL을 생성할 수 있는 편리한 패키지가 포함되어 있습니다.

HTML 이스케이프

html/template 패키지는 HTML 템플릿을 안전하게 렌더링하기 위한 기능을 제공합니다. 예를 들어, 웹 앱에서 사용자가 제공한 입력을 안전하게 표시하려면 해당 입력에 포함된 HTML 특수 문자를 이스케이프해야 합니다.

import "html/template"

func main() {
    userInput := `Hello <script>alert('XSS attack')</script>`
    safeHTML := template.HTMLEscapeString(userInput)
    fmt.Println(safeHTML) // 출력: Hello &lt;script&gt;alert(&#39;XSS attack&#39;)&lt;/script&gt;
}

위 코드에서 HTMLEscapeString 함수는 사용자 입력에 포함된 HTML 특수 문자를 안전한 텍스트로 변경합니다.

URL 처리

net/url 패키지는 URL을 파싱하고 생성하는데 사용됩니다. URL에서 쿼리 파라미터를 빌드하거나 파싱하는 등의 기능을 제공합니다.

import "net/url"

func main() {
    // URL 파싱
    u, err := url.Parse("http://example.com/?q=hello+world")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(u.Scheme) // 출력: http
    fmt.Println(u.Host)   // 출력: example.com
    fmt.Println(u.Query().Get("q")) // 출력: hello world

    // URL 생성
    u.Path = "/newpath"
    u.RawQuery = "key=value"
    fmt.Println(u.String()) // 출력: http://example.com/newpath?key=value
}

위의 코드에서 url.Parse 함수를 사용하여 URL을 해석하고, u.Query().Get("q")를 사용하여 쿼리 파라미터를 가져옵니다. 또한, URL의 다양한 부분을 수정하여 새로운 URL을 생성할 수 있습니다.

Go 언어는 HTML 이스케이프와 URL 처리를 간단하게 처리할 수 있는 표준 라이브러리를 제공하여 웹 애플리케이션 개발 시 보안 및 안정성을 향상시킬 수 있습니다.

참고 자료