it-swarm-es.com

¿Cómo prevenir CSRF Si desea incluir complementos Flash en su formulario como subir en su formulario?

¿Qué es el CSRF?

Necesito una definición básica que no se levanta de Wikipedia.

Entiendo la inyección de SQL, XSS, envenenamiento de las galletas, pero simplemente no puedo envolver mi mente alrededor de esto.

Estoy usando un marco, CakePHP , que tiene un componente que evita automáticamente este CSRF. Sin embargo, cada vez que hago algo a la forma como usar jquery para alterar los valores del campo. O cuando incluyo un AJAX que funciona con complementos Flash como Subir , necesito deshabilitar CSRF.

Entonces, ¿cómo puedo, en principio, para prevenir la CSRF cuando tales elementos estén involucrados en el formulario?

5
Kim Stacks

La falsificación de la solicitud de Solicitud de CSRF o CSRF es básicamente una persona mala que engaña al navegador de una buena persona en la realización de funciones en su sitio web en el nombre de las personas malas.

Aquí hay un ejemplo:

  1. Buen usuario inicia sesión en su sitio web y obtiene una sesión válida
  2. MAL USUARIO TRIGACIONES GUEN USUARIO PARA SALER UN ENLACE A UN SITIO MALONICO
  3. El sitio malicioso contiene un formulario con datos falsificados que publican en su sitio web (sin embargo, ya que se envía desde el lado del cliente, su sitio lo cree originado en el buen usuario)
  4. Luego, su sitio se vea el buen usuario enviado un formulario y procesa la acción.

Vamos a ponerlo en contexto:

  1. Buen usuario es un administrador en su sitio web.
  2. Desde el panel de administración, el buen usuario puede agregar un usuario llenando un formulario que se ve así:

    <form action="/new_user.php" name="myform" method="POST">
        <input type="text" name="new_username">
        <input type="password" name="new_password">
        <input type="Submit">
    </form>
    
  3. El buen usuario sigue un enlace a un sitio malicioso, que contiene el siguiente javascript:

    <form action="http://www.yoursite.com/new_user.php" name="myform" method="POST">
        <input type="hidden" name="new_username" value="MaliciousHax0r">
        <input type="hidden" name="new_password" value="MaliciousPass">
    </form>
    <script type="text/javascript">
        document.myform.submit();
    </script>
    
  4. Su solicitud ahora recibe la solicitud que fue enviada por un buen usuario, en nombre del usuario incorrecto. Dado que se originó en un buen usuario, que pasa a iniciar sesión en su sitio web, todo está bien y su sitio web procesa la solicitud.

Ahora tenga en cuenta que este es un ejemplo simple, y el buen usuario vería que el envío ocurriera que debería elevar una bandera roja, sin embargo, usar métodos ligeramente más complejos, como XMLHTTTPRequest () en JavaScript sería silencioso/desconocido para el buen usuario.

El mal usuario ha obtenido una cuenta en su sistema.

Cómo eliminar el CSRF:

  1. El truco es agregar un token a cada forma que tiene un valor aleatorio que se genera para cada solicitud.
  2. Cuando se envía el formulario, su aplicación verifica para asegurarse de que se pase el token, y coincida con el aleatorio que se generó cuando se cargó el formulario.

El sitio malicioso no tendría acceso a este token, por lo tanto, no podría proporcionar que no se requiera la PEICE, y no se procesará una presentación de forma.

Cómo hacer que otras herramientas funcionen sin deshabilitar la protección de CSRF en CakePHP:

No sé. Verifique la documentación de la protección del CSRF, para CAKEPHP, y para los otros complementos.

Preguntar si usar o no aquellos adiciones vale la pena la pérdida en la protección del CSRF y considerar soluciones alternativas.

Recurso CSRF:

https://www.fortify.com/vulncat/en/vulncat/javascript/csrf.html

7
Purge