CSRF o Cross-Site Request Forgery es básicamente una persona mala que engaña al navegador de una persona buena para que realice funciones en su sitio web en nombre de las personas malas.
Aquí hay un ejemplo:
- Los buenos usuarios inician sesión en su sitio web y
obtiene una sesión valida
- Malos trucos de usuario buen usuario en
siguiendo un enlace a un sitio malicioso
- malicioso
El sitio contiene un formulario con datos falsificados que publica en su
sitio web
(Sin embargo, desde que se envía desde el cliente
lado, su sitio cree que se originó
del buen usuario)
- tu sitio entonces
El buen usuario ha enviado un formulario.
y procesa la acción.
Pongámoslo en contexto:
- Un buen usuario es un administrador en
su sitio web.
-
Desde el panel de administración, un buen usuario puede
añadir un usuario rellenando un formulario
que se parece a esto:
<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>
-
Un 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>
-
Tu aplicación ahora recibe el
solicitud que fue presentada por Buena
usuario, en nombre de usuario malo. Desde que
originado de Buen usuario, quien
pasa a iniciar sesión en su
sitio web, todo está bien y tu
El sitio web procesa la solicitud.
Ahora tenga en cuenta que esto es un simple
ejemplo, y el buen usuario vería
la presentación suceda que DEBERÍA elevar
una bandera roja, sin embargo usando un poco
métodos más complejos, tales como
XMLHttpRequest () en javascript lo haría
ser silencioso / desconocido para el buen usuario.
El usuario malo ha obtenido una cuenta
en tu sistema.
Cómo eliminar CSRF:
- El truco es agregar un token a cada uno
forma que tiene un valor aleatorio que
se genera para cada solicitud.
- Cuando se envía el formulario, su
controles de la aplicación para asegurarse de que el
el token se pasa y coincide con el
uno al azar que se generó cuando
el formulario fue cargado.
El sitio malicioso no tendría
acceso a este token, por lo tanto
no podria proporcionar eso
pieza requerida, y un formulario de presentación
no sería procesado.
Cómo hacer que otras herramientas funcionen sin deshabilitar la protección CSRF en CakePHP:
No lo sé. Consulte la documentación para la protección CSRF, para CakePHP y para los otros complementos.
Cuestione si el uso de esos complementos vale o no la pena en la protección CSRF, y considere soluciones alternativas.
Recurso CSRF:
enlace