2008-10-27 19 views
6

Tengo un editor de texto enriquecido en mi sitio que intento proteger contra los ataques XSS. Creo que ya manejé casi todo, pero aún no estoy seguro de qué hacer con las imágenes. En este momento estoy usando la siguiente expresión regular para validar las direcciones URL de imagen, que estoy asumiendo bloqueará línea Javascript ataques XSS:Creación de scripts entre sitios desde una imagen

"https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+" 

lo que no estoy seguro es de lo abierta que esto me deja a los ataques XSS de la imagen remota ¿La vinculación a una imagen externa es una amenaza grave para la seguridad?

Lo único que se me ocurre es que la URL ingresada hace referencia a un recurso que devuelve "text/javascript" como su tipo MIME en lugar de algún tipo de imagen, y que luego se ejecuta javascript.

¿Es esto posible? ¿Hay alguna otra amenaza a la seguridad que deba considerar?

+2

también recomiendo la hoja de trucos ha.ckers.org: ha.ckers.org/xss.html –

Respuesta

4

Otra cosa de la que preocuparse es que puede incrustar fácilmente código PHP dentro de una imagen y cargarla la mayor parte del tiempo. Lo único que un ataque tendría que ser capaz de hacer es encontrar una forma de incluir la imagen. (Solo se ejecutará el código PHP, el resto solo se repetirá). Verifique que el tipo MIME no lo ayude con esto porque el atacante puede simplemente cargar una imagen con los primeros bytes correctos, seguido de un código PHP arbitrario. (Lo mismo es cierto para código HTML y Javascript).

+0

usuarios no voy a dejar subir imágenes Los usuarios solo pueden vincular imágenes en otros sitios por razones como las que mencionaste. –

+0

¿No sería un filtro de nombre de archivo simple para evitar esto? – AaronSieb

+0

@ AaronSieb, no, porque podría, por ejemplo, incrustar código PHP en una paleta GIF y cargar una imagen GIF perfectamente válida con el tipo de archivo y tipo de mime correctos. El problema es que, mientras pueda manipular el sitio web para incluir ("my_uploaded_gif.gif"), tendrá problemas. Además, mira la cosa% 00. –

1

En ese caso, observe el contexto a su alrededor: ¿los usuarios solo proporcionan una URL? En ese caso, está bien simplemente validar la semántica de las URL y el tipo MIME. Si el usuario también ingresa etiquetas de algún tipo, deberá asegurarse de que no sean manipulables para hacer otra cosa que mostrar imágenes.

2

Si el visor final está en un área protegida por contraseña y su aplicación contiene URL que inician acciones basadas en las solicitudes GET, puede realizar una solicitud en nombre del usuario.

Ejemplos:

  • src = "http://yoursite.com/deleteuser.xxx?userid=1234"
  • src = "http://yoursite.com/user/delete/1234 "
  • src =" http://yoursite.com/dosomethingdangerous"
+0

¿Sería realmente vulnerable a eso? My Regex solo permite http/https al comienzo de la URL, por lo que Javascript (o cualquier codificación de la misma) no debería poder acceder, ¿o estoy equivocado? –

+0

Whoops, se olvidó de los 'https?: // '. Editaré mi respuesta. –

+0

Por REST nunca escribimos nada con OBTENER ... – inf3rno

Cuestiones relacionadas