Es una práctica bien establecida para:
- Filtre las entradas antes de usar / almacenar, no "guardar las entradas del usuario tal como están".
- Codifique la salida antes de mostrarla, ya sea que la tome de su propia base de datos o de la entrada del usuario.
La codificación que elija dependerá del contexto en el que coloque la salida. Para un contexto HTML simple, htmlEncode es correcto.
A veces te encuentras con un caso de uso en el que también codificas la entrada antes de guardarla (editores de comentarios como el que estoy usando aquí ahora). Si está haciendo la codificación correctamente, no debería importar qué idioma use (JS o de otra manera).
Por supuesto, JavaScript se usa tanto en el lado del servidor como en el lado del servidor. Si confía en solo en el lado del cliente para realizar su trabajo relacionado con #appsec (codificación en este caso), eso podría ser riesgoso, no porque sea JS, sino porque es del lado del cliente.