2010-03-23 19 views
13

Tengo una etiqueta HTML <textarea>$FOO</textarea> y la variable $FOO se rellenará con contenido HTML y JavaScript arbitrario, para mostrar y editar dentro del área de texto. ¿Qué tipo de "escaparse" necesito para aplicar a $ FOO?HTML: <textarea> -Tag: ¿Cómo escapar correctamente el contenido de HTML y JavaScript que se muestra allí?

Primero intenté escapar de HTML, pero esto no funcionó (ya que entonces no se mostrará el código HTML original de $ FOO sino el contenido escapado. Por supuesto, esto no es lo que quiero: quiero mostrarme sin escapar del HTML/JS contenido de la variable ...

es imposible visualizar contenido HTML dentro de una etiqueta <textarea> y también permitir que sea editable como HTML?

gracias Jens

+0

Esto fue mi culpa: el problema fue que el contenido se escapó DOS veces. – jens

Respuesta

20

primera vez listada de escapar de ella HTML

Sí, eso es correcto. Los contenidos de un <textarea> no son diferentes de los contenidos de cualquier otro elemento como <span> o <p>: si desea poner algo de texto dentro debe HTML-escapar cualquier < o & caracteres en él a &lt; y &amp; respectivamente.

Los navegadores tienden a darle más libertad de acción con el formato fallo en <textarea> s, en que la reserva para inválidos sin escape < símbolos es para hacerlos como texto en lugar de las etiquetas, pero eso no lo hace menos mal o peligroso (para XSS).

pero esto no funcionaba

Por favor, después de lo que hiciste eso no funcionó. Escaparse de HTML es definitivamente lo correcto.

+0

Gracias por su respuesta. Uso "Commons Velocity" que internamente usa alguna otra biblioteca StringUtils de Apache para codificación de HTML. Tengo que cavar más profundo parece que en algún lugar hay algo que va mal: me da <! - prueba - > Esto significa que algo escapó dos veces. Gracias por su respuesta, entonces sé que tengo que seguir investigando cómo escapar de ella. – jens

+0

Tal vez verifique si se ha configurado un 'EscapeHtmlReference' ReferenceInsertionEventHandler en Velocity. Si es así, no necesitarías escaparte más. – bobince

+0

@bobince - Tengo preguntas similares con el uso del editor/sanitizador de PageDown. ¿Te importaría echar un vistazo? En el contexto de MVC3, parece que no puedo encontrar el método adecuado para codificar mi contenido de TextArea antes de publicarlo en el servidor: http://stackoverflow.com/questions/9073132/request-validation-when-posting-html-javascript- content-mvc3, y http://stackoverflow.com/questions/9071369/handling-code-blocks-with-markdown-pagedown –

2

Usted necesita reemplazar el carácter especial de HTML con character references (eit sus referencias de caracteres numéricos o entidades), en textarea, al menos &, < y >.

+0

hola Gumbo, ¡Gracias por tu ayuda! Parece que el problema entonces debe ser que las bibliotecas que escapan no funcionan correctamente como deberían. Gracias. – jens

Cuestiones relacionadas