fix(server/handlers): HTML escape chat messages to prevent XSS attacks (#322)

pull/330/head
mei 3 months ago committed by GitHub
parent 67f57e1d5b
commit 9b3ddee4a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -6,6 +6,7 @@ import (
"fmt"
"io"
"strings"
"text/template"
"time"
"github.com/gin-gonic/gin"
@ -373,12 +374,13 @@ func handleChatMessage(cli *op.Client, message string) error {
if message == "" {
return sendErrorMessage(cli, "message is empty")
}
if len(message) > MaxChatMessageLength {
sanitizedMessage := template.HTMLEscapeString(message)
if len(sanitizedMessage) > MaxChatMessageLength {
return sendErrorMessage(cli, "message too long")
}
err := cli.SendChatMessage(message)
err := cli.SendChatMessage(sanitizedMessage)
if err != nil && errors.Is(err, model.ErrNoPermission) {
return sendErrorMessage(cli, fmt.Sprintf("send chat message error: %v", err))
return sendErrorMessage(cli, "failed to send message due to permission issue")
}
return err
}

Loading…
Cancel
Save