Por lo que entiendo, configurar innerHTML en un elemento es malo, porque si los nuevos contenidos provienen de los usuarios, un usuario malintencionado puede usarlo para inyectar etiquetas <script> y otro contenido dañino.
Como lo demuestra esta pregunta , ahora hay alrededor de ocho etiquetas alternativas diferentes (con algunas no estándar).
En mi caso, quiero poder insertar etiquetas html reales como <b> y <i> , e incluso <a> .
Pero nunca necesito que se inserte <script> .
¿Existe una alternativa estandarizada de mejores prácticas para innerHTML usando Vanilla Javascript?
Hay un millón de cosas que puedes estropear que permitirán XSS si lo haces tú mismo. Su mejor opción es una biblioteca para desinfectar el html por usted.
Vea algunas opciones aquí Limpiar/Reescribir HTML en el lado del cliente
Una vez que haya desinfectado, importa menos qué propiedad establezca.