<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Basset</id>
	<title>Wiki du LAMA (UMR 5127) - Contributions [fr]</title>
	<link rel="self" type="application/atom+xml" href="http://os-vps418.infomaniak.ch:1250/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Basset"/>
	<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php/Sp%C3%A9cial:Contributions/Basset"/>
	<updated>2026-04-16T10:47:52Z</updated>
	<subtitle>Contributions</subtitle>
	<generator>MediaWiki 1.39.4</generator>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11237</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11237"/>
		<updated>2018-11-25T19:19:24Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Différentes méthodes d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies.&lt;br /&gt;
&lt;br /&gt;
En effet, si une victime (souvent un administrateur) a une &#039;&#039;&#039;session ouverte&#039;&#039;&#039; sur son site et que celui-ci est vulnérable alors il s&#039;expose à des attaques.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11210</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11210"/>
		<updated>2018-11-25T18:45:39Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies.&lt;br /&gt;
&lt;br /&gt;
En effet, si une victime (souvent un administrateur) a une &#039;&#039;&#039;session ouverte&#039;&#039;&#039; sur son site et que celui-ci est vulnérable alors il s&#039;expose à des attaques.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11209</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11209"/>
		<updated>2018-11-25T18:45:20Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies.&lt;br /&gt;
&lt;br /&gt;
En effet, si une &#039;&#039;&#039;victime&#039;&#039;&#039; (souvent un administrateur) a une session ouverte sur son site et que celui-ci est vulnérable alors il s&#039;expose à des attaques.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11208</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11208"/>
		<updated>2018-11-25T18:45:03Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies.&lt;br /&gt;
&lt;br /&gt;
En effet, si une victime (souvent un administrateur) a une session ouverte sur son site et que celui-ci est vulnérable alors il s&#039;expose à des attaques.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11205</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11205"/>
		<updated>2018-11-25T18:42:01Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11203</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11203"/>
		<updated>2018-11-25T18:41:29Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions &#039;&#039;&#039;est à l&#039;origine&#039;&#039;&#039; de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies. Le serveur à la possibilité de crypter le contenu des sessions.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11202</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11202"/>
		<updated>2018-11-25T18:41:05Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Le mécanisme des sessions est à l&#039;origine de la faille CSRF.&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies. Le serveur à la possibilité de crypter le contenu des sessions.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11192</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11192"/>
		<updated>2018-11-25T18:33:25Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Les sessions sont sauvegardées côté serveur et leurs identifications s&#039;effectuent à l&#039;aide des cookies. Le serveur à la possibilité de crypter le contenu des sessions.&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11185</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11185"/>
		<updated>2018-11-25T18:27:19Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Session */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
&lt;br /&gt;
Une session est un mécanisme technique permettant de sauvegarder temporairement sur le serveur des informations relatives à un internaute. A chaque ouverture de nouvelle session, l&#039;internaute se voit attribué un identifiant de session. &lt;br /&gt;
&lt;br /&gt;
Elle stocke donc l’état d’un client sur un site web.&lt;br /&gt;
&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11171</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11171"/>
		<updated>2018-11-25T18:15:39Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemple d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable en même tant que l&#039;attaque à lieu.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11167</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11167"/>
		<updated>2018-11-25T18:14:36Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemple d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Pré-requis&#039;&#039;&#039;  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11166</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11166"/>
		<updated>2018-11-25T18:14:02Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemple d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant repère un &#039;&#039;&#039;site non protégé&#039;&#039;&#039; contre la faille CSRF : &#039;&#039;www.forum.com&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Il sait aussi que l’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
&#039;&#039;www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
L&#039;attaquant utilise la faille CSRF qui consiste à rediriger l&#039;administrateur vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11156</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11156"/>
		<updated>2018-11-25T18:05:15Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant &#039;&#039;&#039;gérée&#039;&#039;&#039; par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11145</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11145"/>
		<updated>2018-11-25T17:55:27Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Protection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un &#039;&#039;&#039;délai d&#039;expiration&#039;&#039;&#039; de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11144</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11144"/>
		<updated>2018-11-25T17:55:14Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Risque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois &#039;&#039;&#039;exemples d’opérations&#039;&#039;&#039; qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc &#039;&#039;&#039;l’usurpation d’identité et l’exécution d’actions malveillantes&#039;&#039;&#039; sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11143</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11143"/>
		<updated>2018-11-25T17:54:41Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Optimisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre &#039;&#039;&#039;connaissance de la vulnérabilité&#039;&#039;&#039; du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et &#039;&#039;&#039;éviter d&#039;être repéré&#039;&#039;&#039; avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11142</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11142"/>
		<updated>2018-11-25T17:54:14Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Différentes méthodes d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Une victime consulte &#039;&#039;&#039;un mail malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une victime visite &#039;&#039;&#039;un site web malveillant&#039;&#039;&#039; qui le redirige vers une action non consentie du site vulnérable :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11140</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11140"/>
		<updated>2018-11-25T17:53:24Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Différentes méthodes d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un &#039;&#039;&#039;mail&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un &#039;&#039;&#039;site malveillant&#039;&#039;&#039; :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11139</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11139"/>
		<updated>2018-11-25T17:52:32Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Optimisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisations et vérifications peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11138</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11138"/>
		<updated>2018-11-25T17:52:04Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11132</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11132"/>
		<updated>2018-11-25T17:50:19Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;&#039;&#039;&#039;Cross site request forgery&#039;&#039;&#039;&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
&lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11130</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11130"/>
		<updated>2018-11-25T17:49:36Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
&lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11129</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11129"/>
		<updated>2018-11-25T17:49:23Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. &lt;br /&gt;
&lt;br /&gt;
Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11128</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11128"/>
		<updated>2018-11-25T17:49:10Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11125</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11125"/>
		<updated>2018-11-25T17:48:19Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11123</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11123"/>
		<updated>2018-11-25T17:48:08Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Faille CSRF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11114</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11114"/>
		<updated>2018-11-25T17:43:17Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée par la plupart des frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et où le développeur n&#039;a pas ajouté pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11112</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11112"/>
		<updated>2018-11-25T17:42:08Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF est maintenant gérée sur les frameworks d&#039;applications web modernes (Laravel, Yii2 ...).&lt;br /&gt;
&lt;br /&gt;
Elle reste quand même présente sur des sites développées sans framework et si le développeur n&#039;ajoute pas les protections nécessaires.&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11107</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11107"/>
		<updated>2018-11-25T17:32:48Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Différentes méthodes d&amp;#039;attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11104</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11104"/>
		<updated>2018-11-25T17:29:00Z</updated>

		<summary type="html">&lt;p&gt;Basset : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Mail-16.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align:center;&amp;quot;&amp;gt;[[Fichier:Site-7.png]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11091</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11091"/>
		<updated>2018-11-25T17:25:25Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Faille CSRF */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11088</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11088"/>
		<updated>2018-11-25T17:23:07Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Attaque */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
=== Exemple d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
L’administrateur utilise cette URL pour supprimer un utilisateur :&lt;br /&gt;
www.forum.com/index.php?profile=toto&amp;amp;action=supprimer&lt;br /&gt;
&lt;br /&gt;
La faille CSRF consiste à le rediriger vers cette page, et ainsi lui faire supprimer un utilisateur.&lt;br /&gt;
&lt;br /&gt;
Pré-requis  : l’administrateur doit être connecté sur le site vulnérable.&lt;br /&gt;
&lt;br /&gt;
=== Différentes méthodes d&#039;attaque ===&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11085</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=11085"/>
		<updated>2018-11-25T17:19:55Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Optimisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
Plusieurs optimisation et vérification peuvent améliorer l’efficacité de l&#039;attaque.&lt;br /&gt;
&lt;br /&gt;
Prendre connaissance de la vulnérabilité du site attaqué :&lt;br /&gt;
&lt;br /&gt;
* Vérifier l&#039;absence de token dans les formulaires&lt;br /&gt;
* Connaître les routes sensibles du sites&lt;br /&gt;
&lt;br /&gt;
Cacher les liens malveillant et éviter d&#039;être repéré avant l&#039;attaque : &lt;br /&gt;
* Utiliser des redirections &lt;br /&gt;
* Utiliser des appels AJAX&lt;br /&gt;
&lt;br /&gt;
AJAX cache totalement l’action malveillante pour un utilisateur lambda. Le CORS du site victime doit autoriser les noms de domaines étrangers.&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10970</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10970"/>
		<updated>2018-11-25T14:54:30Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:mcafee.png]] &#039;&#039;&#039;McAfee&#039;&#039;&#039;, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Mcafee.png&amp;diff=10967</id>
		<title>Fichier:Mcafee.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Mcafee.png&amp;diff=10967"/>
		<updated>2018-11-25T14:53:50Z</updated>

		<summary type="html">&lt;p&gt;Basset : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10964</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10964"/>
		<updated>2018-11-25T14:52:13Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] &#039;&#039;&#039;YouTube en 2008&#039;&#039;&#039;, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10963</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10963"/>
		<updated>2018-11-25T14:52:03Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
[[Fichier:youtube.png]] YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Youtube.png&amp;diff=10962</id>
		<title>Fichier:Youtube.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Youtube.png&amp;diff=10962"/>
		<updated>2018-11-25T14:51:22Z</updated>

		<summary type="html">&lt;p&gt;Basset : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10961</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10961"/>
		<updated>2018-11-25T14:49:29Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]] &#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10960</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10960"/>
		<updated>2018-11-25T14:49:05Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ing.png]]&#039;&#039;&#039;L&#039;application Web de banque en ligne d&#039;ING Direct&#039;&#039;&#039;, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Ing.png&amp;diff=10959</id>
		<title>Fichier:Ing.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Ing.png&amp;diff=10959"/>
		<updated>2018-11-25T14:48:28Z</updated>

		<summary type="html">&lt;p&gt;Basset : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10956</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10956"/>
		<updated>2018-11-25T14:45:42Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Protection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger &#039;&#039;&#039;leurs utilisateurs&#039;&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10955</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10955"/>
		<updated>2018-11-25T14:45:31Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Protection */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un &#039;&#039;&#039;jeton&#039;&#039;&#039; (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le &#039;&#039;&#039;token&#039;&#039;&#039; dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10954</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10954"/>
		<updated>2018-11-25T14:45:02Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006&#039;&#039;&#039;, la faille permettait : &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10953</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10953"/>
		<updated>2018-11-25T14:44:47Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006, la faille permettait :&#039;&#039;&#039; &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct, la faille permettait :&lt;br /&gt;
* des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008, la faille permettait  :&lt;br /&gt;
* de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee, la faille permettait  : &lt;br /&gt;
* de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10952</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10952"/>
		<updated>2018-11-25T14:43:51Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006 :&#039;&#039;&#039; &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct :&lt;br /&gt;
* permettait des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008 :&lt;br /&gt;
* permettait de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee : &lt;br /&gt;
* permettait de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10951</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10951"/>
		<updated>2018-11-25T14:43:44Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
Les 4 exemples réels ci-dessous montre les possibilités qu&#039;offre cette faille :&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006 :&#039;&#039;&#039; &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct :&lt;br /&gt;
* permettait des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008 :&lt;br /&gt;
* permettait de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee : &lt;br /&gt;
* permettait de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10950</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10950"/>
		<updated>2018-11-25T14:42:02Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:netflix.png]] &#039;&#039;&#039;Netflix en 2006 :&#039;&#039;&#039; &lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct :&lt;br /&gt;
* permettait des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008 :&lt;br /&gt;
* permettait de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee : &lt;br /&gt;
* permettait de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10949</id>
		<title>Faille CSRF</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Faille_CSRF&amp;diff=10949"/>
		<updated>2018-11-25T14:41:44Z</updated>

		<summary type="html">&lt;p&gt;Basset : /* Exemples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
 Auteurs : Victor BASSET et Vincent PEILLEX&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
= Session =&lt;br /&gt;
* Stocke l’état d’un client sur un site web&lt;br /&gt;
* Identification de la session avec des cookies&lt;br /&gt;
* Sessions sauvegardées côté serveur&lt;br /&gt;
* Un cookie est configuré pour être envoyé sur un ou plusieurs domaine&lt;br /&gt;
* Possibilité de générer un nouvel id pour chaque requête (exemple : Laravel)&lt;br /&gt;
* Possibilité de crypter le contenu des sessions sur le serveur de stockage (utile si on on utilise un autre serveur pour le stockage&lt;br /&gt;
&lt;br /&gt;
= Faille CSRF =&lt;br /&gt;
&lt;br /&gt;
== Attaque ==&lt;br /&gt;
&lt;br /&gt;
La faille CSRF (&amp;quot;Cross site request forgery&amp;quot;) qui, si l’on essaie de donner une définition en français, signifie Falsification de requête inter-sites. Elle cherche à faire exécuter des actions directement sur l’ordinateur de la victime à son insu.&lt;br /&gt;
Cette faille est compatible avec n&#039;importe quel site, pour peu que vous y soyez connecté. &lt;br /&gt;
Elle demande à celui qui l&#039;exploite de connaître les liens utilisés par la victime.&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant la requête illégitime dans un mail :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Mail-16.png]]&lt;br /&gt;
&lt;br /&gt;
Attaquer la victime en mettant lançant la requête depuis un site malveillant :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Site-7.png]]&lt;br /&gt;
&lt;br /&gt;
== Optimisation ==&lt;br /&gt;
&lt;br /&gt;
== Risque ==&lt;br /&gt;
&lt;br /&gt;
Le risque est inhérent au site visité par la victime puisque le CSRF consiste à effectuer des opérations sur un site sans le consentement de l’utilisateur et à son insu.&lt;br /&gt;
&lt;br /&gt;
Voici trois exemples d’opérations qui étaient possibles par un attaquant sur des sites ou produits connus et vulnérables :&lt;br /&gt;
&lt;br /&gt;
* opérations à l’insu de l’utilisateur sur un site bancaire (par exemple, virement d’argent vers un autre compte) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration du routeur WiFi de la victime (via l’interface d’administration web accessible en réseau local) ;&lt;br /&gt;
&lt;br /&gt;
* changement de la configuration d’un webmail (notamment, l’ajout de filtres pour transmettre automatiquement les courriels reçus à une autre adresse).&lt;br /&gt;
&lt;br /&gt;
Le risque principal est donc l’usurpation d’identité et l’exécution d’actions malveillantes sur un site.&lt;br /&gt;
&lt;br /&gt;
== Exemples ==&lt;br /&gt;
&lt;br /&gt;
Cette faille a touché plusieurs sites connus durant la première décennie des années 2000.&lt;br /&gt;
Aujourd&#039;hui la faille est mieux protégée mais elle est malheureusement encore présente sur la toile.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Netflix en 2006 :&#039;&#039;&#039; [[Fichier:netflix.png]]&lt;br /&gt;
&lt;br /&gt;
* l&#039;ajout d&#039;un DVD à la file d&#039;attente de location de la victime&lt;br /&gt;
* la modification de l&#039;adresse de livraison sur le compte&lt;br /&gt;
* la modification des informations d&#039;identification de la victime&lt;br /&gt;
&lt;br /&gt;
L&#039;application Web de banque en ligne d&#039;ING Direct :&lt;br /&gt;
* permettait des transferts d&#039;argent illicites&lt;br /&gt;
&lt;br /&gt;
YouTube en 2008 :&lt;br /&gt;
* permettait de réaliser presque toutes les actions de tout utilisateur.&lt;br /&gt;
&lt;br /&gt;
McAfee : &lt;br /&gt;
* permettait de modifier le système de leur entreprise.&lt;br /&gt;
&lt;br /&gt;
== Protection ==&lt;br /&gt;
&lt;br /&gt;
Le CSRF est une attaque contre les visiteurs d’un site et non contre le site lui-même. Les moyens de protection pour les développeurs servent donc à protéger leurs utilisateurs. &lt;br /&gt;
&lt;br /&gt;
La façon la plus répandue étant l&#039;utilisation d&#039;un jeton (token) unique en session qui sera vérifié à chaque modification, ici un exemple en PHP :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
     $token = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));&lt;br /&gt;
     $_SESSION[&#039;token&#039;] = $token;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Il suffit ensuite d&#039;ajouter le token dans chaque requête envoyée au serveur. &lt;br /&gt;
&lt;br /&gt;
Ici un formulaire HTML où l&#039;on a ajouté le token qui doit être le même que celui en session : &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;form&amp;gt;&lt;br /&gt;
	&amp;lt;!-- Pseudo de la personne à supprimer --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;pseudo&amp;quot; id=&amp;quot;pseudo&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;valider&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;!-- Notre token de vérification, bien caché --&amp;gt;&lt;br /&gt;
	&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;token&amp;quot; value=&amp;quot;&amp;lt;?php echo $token; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Puis côté serveur, avant chaque modification, on vérifie que le token en session et celui du formulaire sont égaux :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// On vérifie que les deux token correspondent&lt;br /&gt;
if ($_SESSION[&#039;token&#039;] == $_POST[&#039;token&#039;]) {&lt;br /&gt;
	// Vérification terminée&lt;br /&gt;
	// On peut supprimer l&#039;utilisateur&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On peut améliorer la protection par token avec l&#039;ajout d&#039;un délai d&#039;expiration de celui-ci (10 min).&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
=Sources=&lt;br /&gt;
&lt;br /&gt;
https://openclassrooms.com/fr/courses/2091901-protegez-vous-efficacement-contre-les-failles-web/2863569-la-csrf&lt;br /&gt;
&lt;br /&gt;
https://www.cert.ssi.gouv.fr/information/CERTA-2008-INF-003/&lt;br /&gt;
&lt;br /&gt;
https://www.leblogduhacker.fr/sandbox/csrf.php?#.W-gXIXVKgqo&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Cross-site_request_forgery#Example_and_characteristics&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
	<entry>
		<id>http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Netflix.png&amp;diff=10948</id>
		<title>Fichier:Netflix.png</title>
		<link rel="alternate" type="text/html" href="http://os-vps418.infomaniak.ch:1250/mediawiki/index.php?title=Fichier:Netflix.png&amp;diff=10948"/>
		<updated>2018-11-25T14:41:04Z</updated>

		<summary type="html">&lt;p&gt;Basset : Basset a téléversé une nouvelle version de Fichier:Netflix.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Basset</name></author>
	</entry>
</feed>