¿Prevención de secuencias de comandos entre sitios en diferentes escenarios?

0

No pude validar caracteres maliciosos como '. < > etc porque estos caracteres son necesarios en mi aplicación. Además, no pude codificar caracteres porque el usuario debía ingresar etiquetas HTML en mi aplicación, por lo que, en caso de que codifiquemos caracteres, las etiquetas html no se muestran en el navegador.

Así que he hecho un filtro que bloquea y etiquetas solamente. ¿Hay algún otro enfoque o algún otro carácter o cadena que deba bloquear?

    
pregunta Ayush3g 13.02.2014 - 19:25
fuente

2 respuestas

1

Parece que el enfoque que está tomando para prevenir las secuencias de comandos entre sitios es la inclusión de etiquetas específicas en una lista negra.

Este enfoque es muy difícil de mantener y no sería recomendable, ya que siempre hay nuevas etiquetas y parámetros que podrían permitir la creación de scripts entre sitios, por lo que requiere un mantenimiento constante. Un buen ejemplo de la variedad de vectores que se pueden usar para XSS es aquí .

Si necesita que sus usuarios puedan usar contenido enriquecido en el sitio (quizás para el formato de texto), quizás otra opción sería mirar idiomas como markdown que podría permitir a los usuarios ingresar texto más rico, sin los peligros de HTML puro.

    
respondido por el Rоry McCune 13.02.2014 - 19:34
fuente
0

En lugar de bloquear, puede permitir el ingreso de cualquier etiqueta, pero puede evitar la ejecución de secuencias de comandos cuando se imprime implementando un Política de seguridad del contenido .

Esto se ejecuta mediante la salida de un encabezado HTTP en todas las páginas de su sitio (o al menos en todas las páginas de contenido del usuario).

por ejemplo

Content-Security-Policy: default-src 'self'

solo permitirá que se acceda a los archivos de script en su propio dominio. Si el usuario incluyera alguno de sus propios códigos en las etiquetas <script> , los atributos ( onclick="doEvil();" ) o el código referenciado en otros dominios ( <script src="http://www.example.com/evil.js"></script>)noseejecutarían.Sivaporestaruta,debelimitareldefault-src(queafectarátodo,desdesolicitudesXHR,fuentesdefuente,fuentesdeimágenes,etc.)hastaself(esdecir,elmismoorigen)ocomomínimodebelimitarelscript-srcystyle-src,loqueevitarálosscriptsexternosyenlíneayelcódigoCSS.

ElúnicoinconvenientequeveodeesteenfoqueesquelosnavegadoresmásantiguospuedennosercompatiblesconCSP.Esposiblequepuedadetectarestoyluegomostraraestosusuariosunaversión"segura" de texto simple del contenido. Por ejemplo, elimine todas las etiquetas y luego codificación HTML en la salida (para evitar cualquier etiqueta que se haya filtrado). Los navegadores compatibles están listados aquí .

    
respondido por el SilverlightFox 14.02.2014 - 11:58
fuente

Lea otras preguntas en las etiquetas