CSRF
CSRF = Cross-Site Request Forgery::
- Type de vulnérabilité des services d’authentification web
- Principe : ** Faire exécuter à un utilisateur une requête HTTP falsifiée qui pointe sur une action interne au site.
- Caractéristiques Implique un site qui repose sur l’authentification globale d’un utilisateur Exploite cette confiance dans l’authentification pour autoriser des actions implicitement ** Envoie des requêtes HTTP à l’insu de l’utilisateur qui est dupé de déclencher ces actions
- Prévention Demander une validation supplémentaire pour les actions critiques (alourdissement du processus ?) Utiliser un jeton de validité du formulaire Eviter d’utiliser des requêtes GET pour effectuer des modifications du système Vérifier le référent (page précédente) dans les pages sensibles
CSRF activé par défaut
Depuis Spring Security 4.0, par défaut, la protection CSRF est activée.
Pour désactiver cette protection::
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
}
variable _csrf
Protéger un formulaire via la variable _csrf::
<c:url var="logoutUrl" value="/logout"/>
<form action=“${logoutUrl}" method="post">
<input type=“submit" value="Log out" />
<input type=“hidden" name=“${_csrf.parameterName}" value="${_csrf.token}"/>
</form>