Cómo hacer uso de fckEditor de forma segura, sin riesgo de cross site scripting?

StackOverflow https://stackoverflow.com/questions/65734

  •  09-06-2019
  •  | 
  •  

Pregunta

En este enlace se describe un exploit en mi aplicación con el fckEditor:http://knitinr.blogspot.com/2008/07/script-exploit-via-fckeditor.html

¿Cómo puedo hacer que mi aplicación segura, mientras que todavía el uso de fckEditor?Es un fckEditor de configuración?Es algún tipo de procesamiento se supone que debo hacer en el lado del servidor después de que me agarre el texto de fckEditor?

Es un rompecabezas porque fckEditor UTILIZA las etiquetas html para su formato, de manera que no puedo codificación de HTML cuando me posterior de la pantalla el texto.

¿Fue útil?

Solución

Desinfectar html del lado del servidor, no hay otra opción.Para PHP sería HTML Purifier, para .NETA no sé.Es difícil de desinfectar HTML no es suficiente para la tira de etiquetas de secuencia de comandos, usted también tiene que mirar hacia fuera para en* controladores de eventos y aún más, gracias a las estupideces de la IE, por ejemplo.

También con la costumbre de html y css es fácil para secuestrar aspecto y el diseño de su sitio - el uso de superposición (posición absoluta) que cubre toda la pantalla, etc.Estar preparados para eso.

Otros consejos

El error no es en realidad FCKeditors culpa.Como siempre que permiten a los usuarios editar HTML que se mostrará en su sitio web que siempre tiene la posibilidad de hacer daño a menos que comprobar los datos antes de la salida de la misma.

Algunas personas usan HTMLencoding para ello, pero que va a destruir todo el formato realizado por el FCKeditor, no lo que queremos.


Tal vez usted puede utilizar el Microsoft Anti-Cross Site Scripting Biblioteca.Muestras en MSDN

Es algún tipo de procesamiento se supone que debo hacer en el lado del servidor después de que me agarre el texto de fckEditor?

Precisamente.StackOverflow había algunos de los primeros temas relacionados con esto.La forma más fácil de resolver es el uso de una biblioteca HTML para analizar la entrada del usuario, y luego de escapar de las etiquetas que no quiere en la salida.Hacer esto como un post-procesamiento de paso, cuando la impresión de la página, los datos en la base de datos debe ser exactamente el mismo como lo que el usuario escribió.

Por ejemplo, si el usuario introduce <b><script>evil here</script></b>, el código convertiría a <b>&lt;script&gt;evil here&lt;/script&gt;</b> antes de la visualización de la página.

Y no uso de expresiones regulares para la solución de este, que es sólo una invitación para que alguien inteligente para romper de nuevo.

FCKEditor puede ser configurado para utilizar sólo un par de etiquetas.Usted tendrá que codificar todo, excepto para los pocos etiquetas.

Esas etiquetas son:<strong> <em> <u> <ol> <ul> <li> <p> <blockquote> <font> <span>.

La fuente de la etiqueta sólo debe tener el rostro y los atributos de tamaño.La etiqueta span sólo debe tener un atributo de clase.

No hay otros atributos deben ser permitidos para estas etiquetas.

Entiendo que la DONTS.Me falta un HACER.

Es el uso de FCKEditor es un requisito, o se puede utilizar un editor diferente/lenguaje de marcado?Yo recomiendo usar Markdown y armas de destrucción masiva Editor, el mismo lenguaje utilizado por StackOverflow.La Rebaja de la biblioteca para .NET debe tener una opción para escapar de todas las etiquetas HTML -- asegúrese de activarlo.

XSS es una cosa delicada.Sugiero leer un poco:

De todos modos, mi resumen es cuando se llega a esto, usted tiene que permitir sólo la estrictamente artículos aceptados;usted no puede rechazar conocido exploits, porque siempre vas a estar detrás de la eterna lucha.

Creo que la cuestión planteada por algunos, no es que Fckeditor sólo codifica un par de etiquetas.Esta es una ingenua suposición de que un mal usuario utilizará el Fckeditor para escribir su malicia.Las herramientas que permiten manual de cambio de entrada son legión.

Yo trato a todos los datos de usuario como contaminados;y el uso de Markdown para convertir texto en HTML.Se desinfecta cualquier HTML se encuentran en el texto, lo que reduce la malicia.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top