flawopen.com/xss/Go
Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Go. Side-by-side vulnerable vs secure code examples for html/template contextual escaping and Gin responses.
Imagine fixar um bilhete em um mural de avisos comunitário dizendo: 'Quem ler isto, entregue sua carteira para a pessoa ao lado'. Se os transeuntes obedecessem cegamente a qualquer bilhete no mural, qualquer um poderia roubar o dinheiro de todos.
Web Application SecurityCWE-79.CWE-79Defense-in-DepthO invasor insere elementos HTML ou JavaScript (ex: <script> ou <img onerror=...>) em campos de formulário ou URLs.
O aplicativo reflete a entrada no HTML ou a grava no banco sem codificação de entidades HTML apropriada.
Quando uma vítima visita a página, o navegador processa o texto inserido como código executável legítimo.
O script executado na origem da vítima acessa cookies de autenticação, localStorage e forja requisições autorizadas.
// text/template does no HTML escaping
import "text/template"
t := template.Must(
template.New("w").Parse(
"<div>Welcome, {{.}}</div>"))
t.Execute(w, name)
// html/template escapes by context
import "html/template"
t := template.Must(
template.New("w").Parse(
"<div>Welcome, {{.}}</div>"))
t.Execute(w, name)