Estoy construyendo un sitio web similar a Twitter. Un usuario puede hacer una publicación y mencionar a otro usuario usando la notación @username .
Al principio, iba a analizar cada publicación del lado del servidor y agregar etiquetas html alrededor de las @mentions , luego presentar la publicación como una template.HTML (estoy usando el lado del servidor Go ), pero luego me di cuenta de que los usuarios podrían agregar cualquier html que quieran, y yo no quiero eso. ¿Hay alguna manera de representar las publicaciones como html mientras se ignora cualquier html que el usuario intente cargar? Cualquier código o marcado que carguen debe mostrarse en texto sin formato.
¿O será mejor agregar el marcado alrededor del lado del cliente @mentions usando javascript ?
¡Gran preocupación! Este tipo de inyección de HTML de la entrada del usuario es un problema real, afortunadamente, hay una solución fácil, puede escapar de los caracteres HTML para que el navegador entienda que hay un carácter literal "<" en el texto, no el comienzo de un elemento HTML.
En Go, está el html.EscapeString , que pasa la entrada del usuario y luego puede usar de manera segura dentro de HTML. Por lo tanto, desinfectaría la entrada y luego la analizaría y vincularía las @mentions .