[go] go 언어에서의 html/escape 패키지와 웹 캐싱
Go 언어를 사용하여 웹 애플리케이션을 개발하는 경우, HTML 코드를 안전하게 표시하고 웹 페이지의 성능을 향상시키기 위해 HTML 이스케이핑과 웹 캐싱이 중요합니다.
HTML 이스케이핑
웹 애플리케이션에서 사용자가 입력한 데이터를 그대로 HTML에 표시할 경우, Cross-Site Scripting(XSS) 공격에 취약해질 수 있습니다. Go 언어에서는 이를 방지하기 위해 html
패키지를 제공합니다. html
패키지를 사용하여 문자열을 이스케이핑하면 HTML 태그가 렌더링되는 것이 아니라 일반 텍스트로 표시되어 XSS 공격을 방지할 수 있습니다.
아래는 html
패키지를 사용하여 HTML 이스케이핑하는 예시입니다.
package main
import (
"fmt"
"html"
)
func main() {
unsafeString := "<script>alert('XSS')</script>"
safeString := html.EscapeString(unsafeString)
fmt.Println(safeString) // 출력: <script>alert('XSS')</script>
}
웹 캐싱
웹 애플리케이션의 성능을 향상시키기 위해, 반복적으로 사용되는 리소스를 캐시에 저장하여 불필요한 요청을 줄일 수 있습니다. Go 언어에서는 웹 캐싱을 위한 여러 패키지를 제공하며, 대표적으로 http
패키지에서 제공하는 Cache-Control
헤더를 활용할 수 있습니다.
아래는 http
패키지를 사용하여 웹 캐싱을 구현하는 예시입니다.
package main
import (
"net/http"
"time"
)
func main() {
client := http.Client{
Transport: &http.Transport{
Proxy: http.ProxyFromEnvironment,
},
}
req, err := http.NewRequest("GET", "http://example.com", nil)
if err != nil {
panic(err)
}
req.Header.Add("Cache-Control", "max-age=3600") // 리소스를 1시간 동안 캐시에 저장
resp, err := client.Do(req)
if err != nil {
panic(err)
}
// 웹 캐시에서 리소스를 읽거나 요청을 보내고 응답을 받음
defer resp.Body.Close()
}
웹 애플리케이션을 개발하면서 HTML 이스케이핑과 웹 캐싱을 적절히 활용하여 보안과 성능을 향상시킬 수 있습니다.