CSRF
As siglas CSRF significan Cross-Site Request Forgery ou Falsificación de peticións entre sitios.
É un tipo de ataque de seguridade web que intenta enganar a un navegador para que realice accións non autorizadas nun sitio onde o usuario está autenticado, sen que el o saiba.
Imos velo cun exemplo sinxelo:
-
Ti estás logueado nun sitio (por exemplo,
banco.com) e tes unhacookiede sesión activa. -
Visitas outra páxina web maliciosa (
malicioso.com). -
Esa páxina inclúe código oculto que fai unha petición ao teu banco, coma esta:
<img src="https://banco.com/transferir?cantidade=1000¶=contaAtaque" /> -
O navegador, sen saber que é un ataque, envía a cookie da túa sesión activa ao banco, coma se foses ti.
-
O banco pensa que ti fixeches esa petición real, e realiza a acción.
Aproveita a confianza que o sitio web (o servidor) ten no navegador do usuario. O atacante non precisa saber a túa contrasinal, só que esteas logueado.
Para prever estes ataques podemos utilizar Tokens CSRF:
O servidor xera un token único e imprevisible por sesión. Este token envíase ao cliente e debe incluírse nos formularios ou peticións POST. Se non está presente ou é incorrecto, a petición é rexeitada.
Exemplo de campo oculto nun formulario:
<input type="hidden" name="csrf_token" value="xA13b9f..." />