Componente para inyectar e interpretar cadenas con código HTML en una página JSF
Estoy usando PrimeFaces con JSF 2.0 para crear una aplicación. Estoy usando <p:editor>
el componente PrimeFaces para permitir al usuario crear texto enriquecido. Pero el resultado de este componente es una fuente HTML que se ve así:
String text = "<p>This text <i>contains</i> some <b>HTML</b> code.</p>";
Cuando muestro esto de la <h:outputText>
siguiente manera:
<h:outputText value="#{bean.text}" />
Luego muestra el código HTML como texto sin formato:
<p>Este texto <i>contiene</i> algún código <b>HTML</b>.</p>
¿Existe algún componente que pueda interpretar la fuente HTML de modo que, por ejemplo, <i>
se muestre en cursiva y <b>
negrita?
Este texto contiene código HTML .
De forma predeterminada, JSF evita que HTML respalde las propiedades del bean para evitar agujeros de ataque XSS. Para desactivar esto, simplemente establezca el escape
atributo de <h:outputText>
en false
.
<h:outputText ... escape="false" />
De esta manera, el HTML no se escapará y, por lo tanto, el navegador web lo interpretará.
Sin relación con el problema concreto, tenga cuidado con los ataques XSS, ya que básicamente está volviendo a mostrar la entrada controlada por el usuario sin escape. Es posible que desees desinfectarlo de antemano.
- ¿Cuál es el concepto general detrás de XSS?
- Prevención de ataques de inyección CSRF, XSS y SQL en JSF
- Desinfectante/limpieza HTML del lado del servidor para JSF
- Escapar de todo excepto de los saltos de línea en h:outputText