¿Cómo evito que XSS tenga acceso directo a las API de AJAX / JSON?

2

En mi cliente enriquecido, evito los datos proporcionados por el usuario antes de renderizar para evitar XSS.

Los datos provienen del servidor sin escapar. Eso es necesario para la lógica de la aplicación, por ejemplo, evitando situaciones donde verifico por error "O&Donnell"==="O'Donnell"

Sin embargo, un atacante puede enviar al usuario un enlace para dirigir el acceso GET a la API JSON subyacente; o el usuario podría tropezar con él. Esto habilita XSS.

¿Cómo puedo prevenir esto? Tokens CSRF? ¿Configurando tipo de contenido a texto plano o JSON y no a HTML? ¿Algún otro enfoque?

    
pregunta Joshua Fox 22.02.2018 - 09:50
fuente

3 respuestas

5
  

¿Configurando tipo de contenido a texto plano o JSON y no a HTML?

Si la API devuelve JSON, el tipo de contenido debería ser application/json . Además de ser correcto, esto también detendrá cualquier problema de XSS. Si un usuario navega directamente a un punto final de API en su navegador, el navegador solo mostrará el JSON sin procesar y no intentará representar ningún HTML ni ejecutar ningún script.

    
respondido por el Anders 22.02.2018 - 14:39
fuente
1

Puede enviar los datos desde la API codificada en base64, luego base64 descodificarlos en el cliente antes de procesarlos. De todos modos, también recomiendo verificar y validar adecuadamente los datos que no son de confianza en el servidor:

enlace

    
respondido por el Devilfox 22.02.2018 - 13:27
fuente
1

Como mencionó Andres, si la aplicación se comunica a través de JSON, asegúrese de que el tipo de contenido esté configurado como application / json y no text / html.

    
respondido por el H4X 22.02.2018 - 17:58
fuente

Lea otras preguntas en las etiquetas