2012-04-23 7 views
9

Esta mañana me desperté con una alerta JavaScript en un proyecto mío que ejecuta KnockoutJS, jQuery y Underscore.js. Dice "Puedo ejecutar cualquier JavaScript de mi elección en los navegadores de tus usuarios". El único JavaScript de terceros que descargo es Typekit, y eliminar eso no hace que esto desaparezca. He buscado JavaScript y JavaScript de proveedor y esta cadena no vuelve a coincidir con nada.¿Recibo una alerta de JavaScript en mi proyecto que no creé, amenazándome?

¿Cómo solucionaría esto y/o es algo que se sabe que ocurre?

+11

No está inyectado en su JS pero en su DB :) No desinfectó los datos de entrada del usuario – fl00r

+1

¿Está importando algún anuncio o algo así? Probablemente sea imposible decirlo sin mirar el sitio. – Pointy

+7

Cuente con suerte que fueron amables, podría haber sido mucho peor –

Respuesta

14

Si tiene una base de datos para su aplicación, ese sería el siguiente lugar para verificar. Supongo que alguien encontró y explotó una vulnerabilidad de Inyección (ya sea una entrada HTML no desinfectada o SQL) e inyectó la secuencia de comandos en una página a través de la base de datos.

El último lugar sería mirar el código ruby ​​para ver si de alguna manera un usuario malintencionado modificó su fuente.

+4

Puede que ni siquiera sea una inyección sql, solo inyección html sin esterilizar. – JayC

+1

@JayC - Estaba en el proceso de editarlo cuando comentaste. Por alguna razón, no pude entender cómo llamar a ese vector. Gracias. –

+0

ah ok, gracias chicos. –

0

Parece un intento de pirateo en su sitio. Verifique cualquier base de datos, archivos de texto, etc. que estén siendo utilizados y que estén recibiendo información del usuario. Parece que no estás verificando lo que se está publicando en tu servidor.

3

Obviamente, toma una entrada del usuario y luego la devuelve como parte de HTML sin citar o desinfectar. Hay dos comprobaciones rápidas para hacer:

1) Abra el código fuente de la página que emite esta alerta y busque dentro del código fuente de alerta el texto exacto de la alerta; esto debería darle una indicación clara de qué campo rellenado por el usuario está comprometido. 2) Para estar seguro, busque todos los otros campos en su base de datos generados por los usuarios (nombres de usuario, texto de comentarios, etc.) para palabras "script" y "alerta".

Para el futuro: desinfecte siempre su entrada (elimine las etiquetas HTML) antes de insertarla en la página HTML O escape los símbolos como entidades según los estándares O trate explícitamente un texto sin formato asignándolo al valor del nodo de texto en DOM.

Cuestiones relacionadas