api: sanitise new commenters' links
This commit is contained in:
parent
2020405e8b
commit
42a58f1d87
@ -15,6 +15,13 @@ func commenterNew(email string, name string, link string, photo string, provider
|
|||||||
return "", errorMissingField
|
return "", errorMissingField
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// See utils_sanitise.go's documentation on isHttpsUrl. This is not a URL
|
||||||
|
// validator, just an XSS preventor.
|
||||||
|
// TODO: reject URLs instead of malforming them.
|
||||||
|
if !isHttpsUrl(link) {
|
||||||
|
link = "https://" + link
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := commenterGetByEmail(provider, email); err == nil {
|
if _, err := commenterGetByEmail(provider, email); err == nil {
|
||||||
return "", errorEmailAlreadyExists
|
return "", errorEmailAlreadyExists
|
||||||
}
|
}
|
||||||
|
@ -33,3 +33,13 @@ func stripPath(url string) string {
|
|||||||
|
|
||||||
return strippedPath
|
return strippedPath
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var httpsUrl = regexp.MustCompile(`^https?://`)
|
||||||
|
|
||||||
|
func isHttpsUrl(in string) bool {
|
||||||
|
// Admittedly, this isn't the greatest URL checker. But it does what we need.
|
||||||
|
// I don't care if the user gives an invalid URL, I just want to make sure
|
||||||
|
// they don't do any XSS shenanigans. Hopefully, enforcing a https?:// prefix
|
||||||
|
// solves this. If this function returns false, prefix with "http://"
|
||||||
|
return len(httpsUrl.FindAllString(in, -1)) != 0
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user