@@ -6,6 +6,7 @@ package consoleapi
66import  (
77	"encoding/json" 
88	"errors" 
9+ 	"html/template" 
910	"net/http" 
1011	"regexp" 
1112	"strings" 
@@ -165,9 +166,11 @@ func (a *Auth) Logout(w http.ResponseWriter, r *http.Request) {
165166	a .cookieAuth .RemoveTokenCookie (w )
166167}
167168
168- // replaceURLCharacters  replaces slash, colon, and dot characters in a string with a hyphen . 
169- func  replaceURLCharacters (s  string ) string  {
169+ // replaceSpecialCharacters  replaces characters that could be used to represent a url or html . 
170+ func  replaceSpecialCharacters (s  string ) string  {
170171	re  :=  regexp .MustCompile (`[\/:\.]` )
172+ 	s  =  template .HTMLEscapeString (s )
173+ 	s  =  template .JSEscapeString (s )
171174	return  re .ReplaceAllString (s , "-" )
172175}
173176
@@ -225,9 +228,13 @@ func (a *Auth) Register(w http.ResponseWriter, r *http.Request) {
225228		return 
226229	}
227230
228- 	// remove special characters from submitted name so that malicious link cannot be injected into verification or password reset emails. 
229- 	registerData .FullName  =  replaceURLCharacters (registerData .FullName )
230- 	registerData .ShortName  =  replaceURLCharacters (registerData .ShortName )
231+ 	// remove special characters from submitted info so that malicious link or code cannot be injected anywhere. 
232+ 	registerData .FullName  =  replaceSpecialCharacters (registerData .FullName )
233+ 	registerData .ShortName  =  replaceSpecialCharacters (registerData .ShortName )
234+ 	registerData .Partner  =  replaceSpecialCharacters (registerData .Partner )
235+ 	registerData .Position  =  replaceSpecialCharacters (registerData .Position )
236+ 	registerData .CompanyName  =  replaceSpecialCharacters (registerData .CompanyName )
237+ 	registerData .EmployeeCount  =  replaceSpecialCharacters (registerData .EmployeeCount )
231238
232239	if  len ([]rune (registerData .Partner )) >  100  {
233240		a .serveJSONError (w , console .ErrValidation .Wrap (errs .New ("Partner must be less than or equal to 100 characters" )))
@@ -427,6 +434,8 @@ func (a *Auth) UpdateAccount(w http.ResponseWriter, r *http.Request) {
427434		a .serveJSONError (w , err )
428435		return 
429436	}
437+ 	updatedInfo .FullName  =  replaceSpecialCharacters (updatedInfo .FullName )
438+ 	updatedInfo .ShortName  =  replaceSpecialCharacters (updatedInfo .ShortName )
430439
431440	if  err  =  a .service .UpdateAccount (ctx , updatedInfo .FullName , updatedInfo .ShortName ); err  !=  nil  {
432441		a .serveJSONError (w , err )
0 commit comments