github / github/codeql

False positive: email content injection

Abierto
#16,699 1 comentario 0 reacciones 0 asignados Ver en GitHub
false-positive
Lenguaje dominante
CodeQL
Estrellas
10.1k
Forks
2.1k
Merge medio
2 d 15 h
PR fusionados (30 d)
141

Descripción

**Description of the false positive**

A simple, valid e-mail address inside an e-mail message triggers https://codeql.github.com/codeql-query-help/go/go-email-injection/

The rule also triggers on valid html, although the [security model](https://pkg.go.dev/html/template#hdr-Security_Model) in `html/template` should make it safe.

**Code samples**
```go
func SendEmailHandler(w http.Response, r http.Request) {
user := r.URL.Query().Get("user")
if m, _ := regexp.MatchString("[a-z]{3}", user); !m {
return
}
msg := fmt.Sprintf("To: %s@example.com\r\n\r\nHello!", user)
smtp.SendMail("", nil, "", nil, []byte(msg))
}
```

Another example where `html/template` takes care of escaping the html content.

```go
var htmlTempl = template.Must(template.New("t").Parse("Message:

{{.}}
"))

func SendEmailHandler(w http.Response, r http.Request) {
msg := r.URL.Query().Get("message")
buf := bytes.NewBuffer([]byte(`MIME-version: 1.0;\nContent-Type: text/html; charset=\"UTF-8\";\n\n`))
htmlTempl.Execute(buf, msg)
smtp.SendMail("", nil, "", nil, buf.Bytes())
}```

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.