<?xml 
version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://openweb.eu.org/spip.php?page=backend.xslt" ?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:atom="http://www.w3.org/2005/Atom"
>

<channel xml:lang="fr">
	<title>Openweb.eu.org</title>
	<link>https://openweb.eu.org/</link>
	<description></description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>
	<atom:link href="https://openweb.eu.org/?page=backend" rel="self" type="application/rss+xml" />

	<image>
		<title>Openweb.eu.org</title>
		<url>https://openweb.eu.org/local/cache-vignettes/L144xH67/siteon0-50793.png?1763118117</url>
		<link>https://openweb.eu.org/</link>
		<height>67</height>
		<width>144</width>
	</image>



<item xml:lang="fr">
		<title>Referrer Policy</title>
		<link>https://openweb.eu.org/articles/referrer-policy</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/referrer-policy</guid>
		<dc:date>2017-12-12T08:41:43Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Nicolas Hoffmann</dc:creator>


		<dc:subject>D&#233;butant</dc:subject>
		<dc:subject>Expert</dc:subject>
		<dc:subject>S&#233;curit&#233;</dc:subject>
		<dc:subject>Qualit&#233;</dc:subject>
		<dc:subject>Navigateurs</dc:subject>

		<description>
&lt;p&gt;Des m&#233;canismes parfois vieux comme le Web sont pr&#233;sents sur nos sites sans que nous en ayons tous les tenants et les aboutissants. Celui pr&#233;sent&#233; aujourd'hui fait partie de cette cat&#233;gorie. C'est &#233;galement l'occasion de voir que son importance peut &#234;tre capitale dans certains cas de figure. Son nom est Referrer Policy. &lt;br class='autobr' /&gt; Introduction &lt;br class='autobr' /&gt;
Le m&#233;canisme dit de Referrer (qu'on peut traduire par &#171; r&#233;f&#233;rent &#187; en fran&#231;ais) est selon Wikipedia : &lt;br class='autobr' /&gt;
Un r&#233;f&#233;rent, plus connu sous l'anglicisme Referer ou (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/debutant" rel="tag"&gt;D&#233;butant&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/securite" rel="tag"&gt;S&#233;curit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/qualite" rel="tag"&gt;Qualit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/navigateurs" rel="tag"&gt;Navigateurs&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Des m&#233;canismes parfois vieux comme le Web sont pr&#233;sents sur nos sites sans que nous en ayons tous les tenants et les aboutissants. Celui pr&#233;sent&#233; aujourd'hui fait partie de cette cat&#233;gorie. C'est &#233;galement l'occasion de voir que son importance peut &#234;tre capitale dans certains cas de figure. &lt;br /&gt;Son nom est &lt;em lang=&#034;en&#034;&gt;Referrer Policy&lt;/em&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Le m&#233;canisme dit de &lt;i lang=&#034;en&#034;&gt;Referrer&lt;/i&gt; (qu'on peut traduire par &#171; r&#233;f&#233;rent &#187; en fran&#231;ais) est &lt;a href=&#034;https://fr.wikipedia.org/wiki/R%C3%A9f%C3%A9rent_(informatique)&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;selon Wikipedia&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote&gt;Un r&#233;f&#233;rent, plus connu sous l'anglicisme &lt;i lang=&#034;en&#034;&gt;Referer&lt;/i&gt; ou &lt;i lang=&#034;en&#034;&gt;Referrer&lt;/i&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;La graphie exacte de ce mot est en r&#233;alit&#233; Referrer, avec deux &#171; r &#187;. Mais (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;, est, dans le domaine des r&#233;seaux informatiques, une information transmise &#224; un serveur &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; lorsqu'un visiteur suit un lien pour acc&#233;der &#224; l'une de ses ressources, lui indiquant l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt; de la page o&#249; se situe ce lien qu'il a suivi.&lt;/blockquote&gt;
&lt;p&gt;En pratique, quand un utilisateur navigue vers un autre site via un lien (ou si un site charge une ressource externe), le serveur informe le site de destination de l'origine de la requ&#234;te en utilisant l'en-t&#234;te &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; &lt;i lang=&#034;en&#034;&gt;Referrer&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Si nous prenons l'exemple du logo d'Openweb, voici l'information de &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; envoy&#233;e :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH168/referrer-lien-wi-366550be-e2008.png?1763128933' alt=&#034;Affichage du referrer pour le logo sous les outils d&#233;veloppeurs de Firefox&#034; width='500' height='168' /&gt;&lt;/p&gt;
&lt;p&gt;Si nous ouvrons le lien pr&#233;c&#233;dent sur Wikipedia, voici l'information de &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; que l'on peut voir :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH168/referrer-lien-wi-366550be-e2008.png?1763128933' alt=&#034;Affichage du referrer du lien sous les outils d&#233;veloppeurs de Firefox&#034; width='500' height='168' /&gt;&lt;/p&gt;
&lt;p&gt;Cela peut &#234;tre utile dans de nombreux cas (certains outils de statistiques se basent l&#224;-dessus, etc.), toutefois, cela peut aussi poser des probl&#232;mes de confidentialit&#233; et de s&#233;curit&#233;. Ajoutons &#224; cela que de nombreuses &#8212; et parfois insoup&#231;onn&#233;es &#8212; &lt;abbr lang=&#034;en&#034; title=&#034;Application Programming Interface&#034;&gt;API&lt;/abbr&gt;s peuvent utiliser cette information... et parfois au d&#233;savantage des propri&#233;taires de sites et/ou de leurs visiteurs.&lt;/p&gt;
&lt;p&gt;Si ce m&#233;canisme pouvait auparavant sembler &#234;tre peu clair et peu param&#233;trable, une sp&#233;cification relativement r&#233;cente permet enfin d'en maitriser les comportements.&lt;/p&gt;
&lt;h2 lang=&#034;en&#034;&gt;Referrer Policy&lt;/h2&gt;
&lt;p&gt;Son nom s'appelle tr&#232;s logiquement &lt;em lang=&#034;en&#034;&gt;Referrer Policy&lt;/em&gt;, qu'on peut traduire par &#171; Politique de &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt; &#187;, ou &#171; Politique de r&#233;f&#233;rents &#187;.&lt;/p&gt;
&lt;p&gt;Cette sp&#233;cification est &#224; l'instant de l'&#233;criture de cet article une &lt;em lang=&#034;en&#034;&gt;Candidate recommendation&lt;/em&gt;, c'est donc raisonnablement stabilis&#233; et &lt;a href=&#034;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#Browser_compatibility&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;tout &#224; fait utilisable en production&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&#192; l'instar de &lt;a href='https://openweb.eu.org/articles/content-security-policy' class=&#034;spip_in&#034;&gt;Content Security Policy&lt;/a&gt;, vous pouvez donc avec &lt;i lang=&#034;en&#034;&gt;Referrer Policy&lt;/i&gt; d&#233;finir clairement votre politique en mati&#232;re de &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt; pour votre site&#8230; et la question est loin d'&#234;tre aussi anodine qu'elle peut sembler l'&#234;tre.&lt;/p&gt;
&lt;h3&gt;Principe et fonctionnement&lt;/h3&gt;
&lt;p&gt;Un en-t&#234;te &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; est envoy&#233; au navigateur contenant cette politique. En voici un exemple via &lt;abbr title=&#034;PHP Hypertext Preprocessor&#034; xml:lang=&#034;en&#034; lang=&#034;en&#034;&gt;PHP&lt;/abbr&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
header(&#034;Referrer-Policy: &lt;ici les valeurs possibles&gt;&#034;);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Voici les valeurs possibles :&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: no-referrer&lt;/code&gt; : aucun en-t&#234;te &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; n'est envoy&#233;.&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: no-referrer-when-downgrade&lt;/code&gt; (valeur par d&#233;faut) : le &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; est envoy&#233; si la s&#233;curit&#233; de la destination est &#224; priori &#233;gale (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;&#8594;&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;), mais n'est pas envoy&#233; pour une destination moins s&#233;curis&#233;e (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;&#8594;&lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt;).&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: origin&lt;/code&gt; : seule l'origine du document sera envoy&#233;e dans tous les cas. L'adresse &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;https://openweb.eu.org/articles/&lt;/code&gt; enverra le &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;https://openweb.eu.org/&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: origin-when-cross-origin&lt;/code&gt; : envoie l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt; compl&#232;te si la destination a la m&#234;me origine, et seulement l'origine pour les autres cas.&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: same-origin&lt;/code&gt; : le &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; sera envoy&#233; pour les &lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt;s avec la m&#234;me origine, et aucun &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; ne sera envoy&#233; dans les autres cas.&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: strict-origin&lt;/code&gt; : le &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; ne contiendra que l'origine du document si la s&#233;curit&#233; de la destination est &#224; priori &#233;gale (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;-&gt;&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;), rien ne sera envoy&#233; pour une destination moins s&#233;curis&#233;e (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;&#8594;&lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt;).&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: strict-origin-when-cross-origin&lt;/code&gt; : quand la requ&#234;te a la m&#234;me origine, l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt; compl&#232;te est envoy&#233;e en &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt;. Dans le cas contraire : le &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; ne contiendra que l'origine du document si la s&#233;curit&#233; de la destination est &#224; priori &#233;gale (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;&#8594;&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;), rien ne sera envoy&#233; pour une destination moins s&#233;curis&#233;e (&lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;&#8594;&lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt;).&lt;/p&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Referrer-Policy: unsafe-url&lt;/code&gt; : l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt; compl&#232;te est pass&#233;e en &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt;, quel que soit le cas.&lt;/p&gt;
&lt;p&gt;Le r&#233;glage par d&#233;faut a longtemps &#233;t&#233; &#224; l'origine d'un mythe : &lt;i&gt;que le passage &#224; &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; tuait en lui-m&#234;me le m&#233;canisme des &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt;&lt;/i&gt;. Quand le &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; &#233;tait beaucoup moins r&#233;pandu qu'actuellement, avoir un site en &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; impliquait d'avoir majoritairement des liens vers des sites ne l'ayant pas (et donc aucun &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; envoy&#233; vers une destination moins s&#233;curis&#233;e). Le passage de Google &#224; &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; il y a quelques ann&#233;es a fortement contribu&#233; &#224; propager ce mythe. N&#233;anmoins, &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; et &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt; sont deux choses s&#233;par&#233;es, d&#233;sol&#233; de tuer cette l&#233;gende urbaine ! :)&lt;/p&gt;
&lt;h3&gt;Implications et donn&#233;es sensibles&lt;/h3&gt;
&lt;p&gt;De prime abord, vous vous dites peut-&#234;tre que votre site n'a rien &#224; cacher :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; vous n'avez aucun probl&#232;me &#224; ce que les sites vers lesquels pointent vos liens soient au courant desdits liens ;&lt;/li&gt;&lt;li&gt; ou les ressources que vous utilisez sur d'autres sites ne sont pas un secret d'&#233;tat non plus&#8230;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Posons clairement la question : &lt;strong&gt;en &#234;tes-vous bien s&#251;r ?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Si certes, des liens publics ne sont pas des secrets d'&#233;tat&#8230; peut-&#234;tre votre site a une interface d'administration, et vous n'avez s&#251;rement pas envie que l'adresse de cette derni&#232;re soit transmise en &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Autre cas de figure : imaginons un intranet sur lequel vous pouvez partager des liens. Souhaitez-vous que l'adresse de ce dernier soit transmise vers l'ext&#233;rieur ? Avec tout ce que cela peut r&#233;v&#233;ler comme d&#233;tails sur le fonctionnement de ce dernier ? Bien s&#251;r que non !&lt;/p&gt;
&lt;p&gt;D'autres &lt;abbr lang=&#034;en&#034; title=&#034;Application Programming Interface&#034;&gt;API&lt;/abbr&gt;s comme &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; peuvent &#233;galement transmettre cette information. Voici un exemple d'informations qui peuvent arriver sur un &lt;em lang=&#034;en&#034;&gt;report-uri&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{ &#034;csp-report&#034;: { &#034;document-uri&#034;: &#034;https://van11y.net/accessible-tab-panel/&#034;, &#034;referrer&#034;: &#034;https://plainjs.com/javascript/plugins/accessible-tabs-panel-system-163/&#034;, &#8230; }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note : &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; &#233;tant assez verbeux de ce point de vue, ce genre d'information est fr&#233;quent.&lt;/p&gt;
&lt;h2&gt;Responsabilit&#233; en tant que concepteurs/possesseurs de sites&lt;/h2&gt;
&lt;p&gt;Vous avez plusieurs questions &#224; vous poser en tant que concepteurs/responsables de sites &#224; propos de votre politique de &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt;.&lt;/p&gt;
&lt;h3&gt;Est-ce que l'adresse peut contenir des informations sensibles pour l'ext&#233;rieur ?&lt;/h3&gt;
&lt;p&gt;S'il n'est pas souhaitable de communiquer certaines adresses vers l'ext&#233;rieur, votre politique en mati&#232;re de &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt; doit le refl&#233;ter. Et bien entendu, &lt;a href=&#034;https://checklists.opquast.com/oqs-v3/criteria/les-donnees-sensibles-ne-sont-pas-transmises-en-clair-dans-les-url&#034;&gt;vous ne transmettez aucune information sensible en clair dans l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt;&lt;/a&gt; ?&lt;/p&gt;
&lt;h3&gt;Est-ce que l'adresse en elle-m&#234;me est une information sensible ?&lt;/h3&gt;
&lt;p&gt;Si vous &#234;tes sur un intranet ou une partie totalement priv&#233;e de votre entreprise, c'est une information sensible que vous ne devez pas communiquer, &lt;em lang=&#034;la&#034;&gt;a fortiori&lt;/em&gt; via &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;&#192; titre d'exemple, si vous saviez le nombre surprenant d'intranets ou d'espaces priv&#233;s qui partagent une page humoristique que j'ai cr&#233;&#233;e il y a quelques ann&#233;es qui s'appelle &#171; &lt;a href=&#034;https://www.estcequonmetenprodaujourdhui.info/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Est-ce qu'on met en production aujourd'hui ?&lt;/a&gt; &#187;... je pense que les responsables s&#233;curit&#233; de ces sites trouveraient &lt;strong&gt;moins dr&#244;le de savoir que cette information fuite&lt;/strong&gt;, notamment en &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt; dans des rapports g&#233;n&#233;r&#233;s par &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; que je re&#231;ois.&lt;/p&gt;
&lt;p&gt;Beaucoup moins dr&#244;le comme exemple, imaginons un site d'entraide pour des femmes victimes de violences&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;J'ai travaill&#233; sur un site de ce genre : Violence que faire, et je peux vous (&#8230;)&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;. Imaginons donc une femme ainsi que l'&#233;tat de choc dans laquelle elle peut se trouver apr&#232;s avoir &#233;t&#233; battue. Elle va donc laisser un message sur ce site, et peut-&#234;tre parler du site personnel de son mari, pour dire que &#171; c'&#233;tait la premi&#232;re fois qu'il faisait &#231;a &#187;, et &#171; qu'il est gentil avec ses autres occupations &#187;. Imaginons que ce dernier apprenne dans son outil de visites qu'un site de ce genre lui a envoy&#233; des visites... que va-t-il penser suite &#224; ce qu'il a fait &#224; sa compagne ? Et que va-t-il faire ensuite ?&lt;/p&gt;
&lt;p&gt;Autant le dire clairement : &lt;strong&gt;il est de la responsabilit&#233; du site de g&#233;rer et d'anticiper ce genre de risques&lt;/strong&gt;. Certains sujets ne souffrent &lt;strong&gt;pas&lt;/strong&gt; de traiter ces risques avec l&#233;g&#232;ret&#233;, et encore moins en tant que professionnels du m&#233;tier.&lt;/p&gt;
&lt;p&gt;Notes : des outils comme &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt; sugg&#232;rent d'utiliser comme valeurs :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;no-referrer&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;same-origin&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;strict-origin&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;strict-origin-when-cross-origin&lt;/code&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Et ce, afin de ne pas divulguer d'informations sensibles.&lt;/p&gt;
&lt;p&gt;Le &lt;abbr title=&#034;World Wide Web Consortium&#034; lang=&#034;en&#034;&gt;W3c&lt;/abbr&gt; &lt;a href=&#034;https://www.w3.org/blog/news/archives/6087?pk_campaign=feed&amp;pk_kwd=w3c-invites-implementations-of-referrer-policy&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;vous recommande de d&#233;finir une politique de &lt;i lang=&#034;en&#034;&gt;referrer&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Cette question des &lt;i lang=&#034;en&#034;&gt;referrers&lt;/i&gt; d&#233;passe de loin le simple cadre des statistiques des sites, et peut devenir un enjeu de s&#233;curit&#233; ou de vie priv&#233;e selon l'activit&#233; des sites.&lt;/p&gt;
&lt;p&gt;Ce n'est bien &#233;videmment pas un hasard si des outils comme &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt; ou &lt;a href=&#034;https://securityheaders.io/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Security Headers&lt;/a&gt; invitent et recommandent d'utiliser cet en-t&#234;te de s&#233;curit&#233;.&lt;/p&gt;
&lt;p&gt;Maintenant que vous en connaissez les enjeux et le contexte, vous n'avez plus d'excuse pour ne pas le d&#233;ployer en toute connaissance de cause &#224; votre tour.&lt;/p&gt;
&lt;h2&gt;R&#233;f&#233;rences, compl&#233;ments&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://www.w3.org/TR/referrer-policy/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Referrer Policy&lt;/span&gt; (sp&#233;cification &lt;abbr title=&#034;World Wide Web Consortium&#034; lang=&#034;en&#034;&gt;W3c&lt;/abbr&gt;)&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Referrer-Policy (Mozilla Developer Network)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Mozilla Observatory&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://securityheaders.io/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Security Headers&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://blog.fastmail.com/2016/06/20/everything-you-could-ever-want-to-know-and-more-about-controlling-the-referer-header/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Everything you could ever want to know (and more) about controlling the Referer header&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;La graphie exacte de ce mot est en r&#233;alit&#233; &lt;i lang=&#034;en&#034;&gt;Referrer&lt;/i&gt;, avec deux &#171; r &#187;. Mais l'erreur est si courante dans la langue anglaise, qu'elle a &#233;t&#233; commise au sein m&#234;me des sp&#233;cifications officielles du protocole &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; (!). La forme erron&#233;e est par cons&#233;quent devenue standard dans l'industrie de l'informatique, lorsqu'il est question des r&#233;f&#233;rents.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;J'ai travaill&#233; sur un site de ce genre : &lt;a href=&#034;https://www.violencequefaire.ch/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Violence que faire&lt;/a&gt;, et je peux vous assurer que le sc&#233;nario &#233;voqu&#233; est tout &#224; fait plausible.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>HTTPS : de SSL &#224; TLS 1.3</title>
		<link>https://openweb.eu.org/articles/https-de-ssl-a-tls-1-3</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/https-de-ssl-a-tls-1-3</guid>
		<dc:date>2017-02-28T13:22:05Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Fr&#233;d&#233;ric Kayser</dc:creator>


		<dc:subject>S&#233;curit&#233;</dc:subject>
		<dc:subject>Expert</dc:subject>
		<dc:subject>Gourou</dc:subject>

		<description>
&lt;p&gt;Un changement de num&#233;ro de version, m&#234;me mineur, est rarement anodin lorsqu'il s'agit d'un protocole de s&#233;curit&#233;. Alors qu'une importante partie de l'&#233;cosyst&#232;me qui gravite autour de SSL/TLS persiste &#224; l'appeler SSL, aujourd'hui, c'est bel et bien uniquement TLS qu'il faut utiliser et avec une large pr&#233;f&#233;rence pour TLS 1.2 et TLS 1.3. &lt;br class='autobr' /&gt; HTTPS est apparu dans Netscape Navigator en 1995 pour accompagner l'essor du commerce en ligne alors naissant. Initialement c'est le protocole SSL &#8212;Secure (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/securite" rel="tag"&gt;S&#233;curit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/gourou" rel="tag"&gt;Gourou&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Un changement de num&#233;ro de version, m&#234;me mineur, est rarement anodin lorsqu'il s'agit d'un protocole de s&#233;curit&#233;. Alors qu'une importante partie de l'&#233;cosyst&#232;me qui gravite autour de SSL/TLS persiste &#224; l'appeler SSL, aujourd'hui, c'est bel et bien uniquement TLS qu'il faut utiliser et avec une large pr&#233;f&#233;rence pour TLS 1.2 et TLS 1.3.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;HTTPS est apparu dans &lt;a href=&#034;https://fr.wikipedia.org/wiki/Netscape_Navigator&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Netscape Navigator&lt;/a&gt; en 1995 pour accompagner l'essor du commerce en ligne alors naissant. Initialement c'est le protocole SSL &#8212;&lt;i lang=&#034;en&#034;&gt;Secure Sockets Layer&lt;/i&gt;&#8212; qui &#233;tait intercal&#233; entre TCP et HTTP. Depuis lors, SSL a bien &#233;volu&#233; et a m&#234;me chang&#233; de nom pour devenir TLS &#8212;&lt;i lang=&#034;en&#034;&gt;Transport Layer Security&lt;/i&gt;&#8212;, on d&#233;nombre d&#233;sormais six versions : SSLv2, SSLv3, TLS 1.0, TLS 1.1, TLS 1.2 et TLS 1.3. Elles apportent chacune des am&#233;liorations parfois subtiles mais qui peuvent se r&#233;v&#233;ler cruciales. 2018 a &#233;t&#233; marqu&#233;e par l'av&#232;nement de TLS 1.3. Dix ans apr&#232;s TLS 1.2, cinq ans apr&#232;s les r&#233;v&#233;lations d'Edward Snowden, cette nouvelle version apporte plus de simplicit&#233;, de vitesse et de s&#233;curit&#233;.&lt;/p&gt;
&lt;p&gt;Cet article est relativement long car il aborde des aspects historiques en plus de la technique, mais d'un point de vue purement pratique il peut se r&#233;sumer en quelques points :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; TLS 1.2 est une n&#233;cessit&#233;, &#224; activer si ce n'est d&#233;j&#224; fait ;&lt;/li&gt;&lt;li&gt; SSLv2 et SSLv3 sont des calamit&#233;s, &#224; d&#233;sactiver ;&lt;/li&gt;&lt;li&gt; TLS 1.0 est en sursis, planifier sa d&#233;sactivation ;&lt;/li&gt;&lt;li&gt; TLS 1.1 ne sert pratiquement &#224; rien ;&lt;/li&gt;&lt;li&gt; TLS 1.3 est l'avenir, consid&#233;rer son adoption d&#232;s que possible.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ces recommandations sont en phase avec celles de l'ANSSI &#8212;Agence Nationale de la S&#233;curit&#233; des Syst&#232;mes d'Information&#8212; : &lt;a href=&#034;https://www.ssi.gouv.fr/guide/recommandations-de-securite-relatives-a-tls/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Recommandations de s&#233;curit&#233; relatives &#224; TLS&lt;/a&gt; (si ce n'est que l'agence fran&#231;aise n'aborde pas encore TLS 1.3) ou le wiki de Mozilla concernant la configuration TLS : &lt;a href=&#034;https://wiki.mozilla.org/Security/Server_Side_TLS&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Security/Server Side TLS&lt;/i&gt;&lt;/a&gt; (destin&#233; &#224; la base au seul usage interne au sein de Mozilla, mais le guide &lt;a href=&#034;https://support.google.com/webmasters/answer/6073543?hl=fr&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;S&#233;curiser votre site &#224; l'aide du protocole HTTPS&lt;/a&gt; de Google et le &lt;a href=&#034;https://www.ncsc.gov.uk/guidance/tls-external-facing-services&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;National Cyber Security Centre&lt;/i&gt;&lt;/a&gt; britannique le recommandent).&lt;/p&gt;
&lt;p&gt;Il arrive qu'on ne dispose que d'un contr&#244;le partiel sur le param&#233;trage de TLS qui est souvent li&#233; &#224; un composant proche du syst&#232;me d'exploitation comme &lt;a href=&#034;https://www.openssl.org&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;OpenSSL&lt;/a&gt; ou &lt;a href=&#034;https://msdn.microsoft.com/en-us/library/windows/desktop/aa380123(v=vs.85).aspx&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Secure Channel&lt;/i&gt;&lt;/a&gt;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;&#201;crire le code informatique qui g&#232;re la cryptographie est une affaire de (&#8230;)&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;, il faut donc &#233;ventuellement s'adresser &#224; son administrateur syst&#232;me ou son h&#233;bergeur pour parvenir &#224; mettre en place certaines &#233;volutions.&lt;/p&gt;
&lt;p&gt;Il est en revanche assez facile de s'&#233;quiper d'outils pour analyser la configuration SSL/TLS d'un serveur ou d'un client web. &lt;a href=&#034;https://www.ssllabs.com/ssltest/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;SSL Labs&lt;/i&gt;&lt;/a&gt; (en ligne) et son quasi &#233;quivalent pour &lt;i lang=&#034;en&#034;&gt;shell bash&lt;/i&gt; &lt;a href=&#034;https://github.com/drwetter/testssl.sh&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;testssl.sh&lt;/a&gt; g&#233;n&#232;rent un rapport relativement complet sur la configuration d'un serveur web s&#233;curis&#233; quelconque et indiquent donc quelles versions de SSL/TLS sont actives, on trouve par exemple pour &lt;a href=&#034;https://www.ssllabs.com/ssltest/analyze.html?d=cfspart.impots.gouv.fr&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;un domaine de la DGFiP&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH234/https-sslv3-tls1-415a2c7b-dd3ec.png?1763128933' alt=&#034;Versions de SSL/TLS actives&#034; width='500' height='234' /&gt;&lt;/p&gt;
&lt;p&gt;Avoir TLS 1.0, 1.1 et 1.2 comme seules versions actives est une situation encore courante actuellement. En effet, tous les navigateurs sont dot&#233;s de TLS 1.2 depuis plusieurs ann&#233;es (voir &lt;a href=&#034;http://caniuse.com/#feat=tls1-2&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Can I use : TLS 1.2&lt;/a&gt;), mais le parc mondial n'est malheureusement pas constitu&#233; uniquement de navigateurs r&#233;cents, c'est pourquoi TLS 1.0 et 1.1 restent encore souvent activ&#233;s aux c&#244;t&#233;s de TLS 1.2 sur de nombreux serveurs. Quant &#224; TLS 1.3 la diffusion de biblioth&#232;ques adapt&#233;es n'est effective que depuis peu.&lt;/p&gt;
&lt;p&gt;On trouve sur &lt;a href=&#034;https://www.ssllabs.com/ssl-pulse/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;SSL Pulse&lt;/i&gt;&lt;/a&gt; un ensemble de statistiques relatives aux &#233;l&#233;ments cl&#233;s de la configuration SSL/TLS c&#244;t&#233; serveur, celles-ci proviennent de l'analyse mensuelle d'un large panel de sites web. Ce qui permet de prendre r&#233;guli&#232;rement le pouls de l'&#233;tat de la crypto sur le web et d'&#233;ventuellement se situer par rapport aux autres sites.&lt;br class='autobr' /&gt;
Le graphique ci-dessous repr&#233;sente l'&#233;volution des versions de SSL/TLS accept&#233;es par les serveurs scrut&#233;s par &lt;i lang=&#034;en&#034;&gt;SSL Pulse&lt;/i&gt; sur une p&#233;riode de quatre ans (les colonnes repr&#233;sentent les mesures d'octobre 2015, 2016, 2017, 2018 et 2019).&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH330/https-sslv3-tls1-30bcefca-fc9d0.png?1763128933' alt=&#034;&#233;volution des versions de SSL/TLS accept&#233;es par les serveurs scrut&#233;s par SSL Pulse&#034; width='500' height='330' /&gt;&lt;/p&gt;
&lt;p&gt;On observe la disparition (toute relative) de SSLv3, le d&#233;clin de TLS 1.0, le retournement de tendance de TLS 1.1 qui suit d&#233;sormais TLS 1.0 vers la sortie alors que TLS 1.2 est proche des sommets et TLS 1.3 b&#233;n&#233;ficie d'un d&#233;part canon. En se basant sur les tendances on peut d&#233;duire que les sites en pointe acceptent TLS 1.2 voire 1.3 mais refusent d'ores et d&#233;j&#224; TLS 1.0 et 1.1, que le gros des troupes accepte indiff&#233;remment TLS 1.2, 1.1 et 1.0 et que les sites &#224; la tra&#238;ne ne peuvent traiter que TLS 1.0 parfois encore second&#233; par SSLv3. Ce d&#233;coupage en trois populations correspond grosso modo &#224; ce que propose Mozilla sur &lt;a href=&#034;https://wiki.mozilla.org/Security/Server_Side_TLS&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Security/Server Side TLS&lt;/i&gt;&lt;/a&gt; avec ses trois configurations : moderne, interm&#233;diaire et vieillot ou la classification R3, R3&amp;minus; et R3&amp;minus;&amp;minus; de l'ANSSI.&lt;/p&gt;
&lt;p&gt;Il faut en effet faire preuve de pragmatisme, la m&#234;me configuration SSL/TLS ne peut pas convenir &#224; tout le monde. De fa&#231;on un peu caricaturale, un site orient&#233; &lt;i lang=&#034;en&#034;&gt;B2B&lt;/i&gt; sera certainement bien plus confront&#233; &#224; de vieux Internet Explorer pour qui TLS 1.0 reste n&#233;cessaire, alors qu'un site dont la confidentialit&#233; est une priorit&#233; ou dot&#233; d'un design qui repose sur des fonctionnalit&#233;s CSS ou Flexbox r&#233;centes pourrait, au contraire, se passer de TLS 1.0 et des vieux clients web qui en d&#233;pendent. Une refonte peut &#234;tre une occasion int&#233;ressante de r&#233;viser une configuration TLS, &#224; condition de bien en mesurer les cons&#233;quences &#8212;ce qui implique que le front-end discute avec le back-end et le syst&#232;me. Si un site est pr&#233;vu pour au minimum IE 11 et que son niveau de d&#233;gradation avec IE 9 ou plus ancien est tel qu'il vaudrait mieux ne pas l'afficher&#8230; la configuration TLS offre une solution radicale.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le client web propose, le serveur web dispose&lt;/h2&gt;
&lt;p&gt;Le client et le serveur web n&#233;gocient certains &#233;l&#233;ments lors de l'&#233;tablissement de la liaison s&#233;curis&#233;e. Il faut en effet qu'ils s'assurent de disposer d'algorithmes en commun pour signer, &#233;changer des cl&#233;s et chiffrer, mais la version du protocole SSL/TLS &#224; utiliser est le tout premier point sur lequel ils doivent n&#233;cessairement s'entendre, car le reste de l'&#233;tablissement de la liaison s&#233;curis&#233;e (le &lt;i lang=&#034;en&#034;&gt;handshake&lt;/i&gt;) varie l&#233;g&#232;rement d'une version &#224; l'autre, ce sont surtout des initialisations, transmissions d'al&#233;as et calculs de sommes de contr&#244;le qui changent.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH267/https-sslv3-tls1-6c7af4ae-78e75.png?1763128933' alt=&#034;Proposition des capacit&#233;s par le client&#034; width='500' height='267' /&gt;&lt;/p&gt;
&lt;p&gt;La r&#232;gle de base est que le client propose, il va donc faire &#233;talage de toutes ses capacit&#233;s, parfois dans un ordre pr&#233;f&#233;rentiel. Puis c'est le serveur qui dispose vu que c'est lui qui va retenir quels algorithmes seront utilis&#233;s en fonction de ses propres capacit&#233;s.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH267/https-sslv3-tls1-8d10a844-73df1.png?1763128933' alt=&#034;R&#233;ponse du serveur selon ses capacit&#233;s&#034; width='500' height='267' /&gt;&lt;/p&gt;
&lt;p&gt;Il va sans dire qu'il se produit quelques probl&#232;mes interg&#233;n&#233;rationnels lorsque de vieux clients essayent de communiquer avec des serveurs qui cherchent &#224; renforcer la s&#233;curit&#233; des donn&#233;es en transit, car ceci s'oppose &#224; une r&#233;trocompatibilit&#233; tr&#232;s pouss&#233;e, ou inversement lorsque des clients r&#233;cents croisent un serveur rest&#233; fig&#233; &#224; une autre &#233;poque.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH419/https-sslv3-tls1-f9792be3-27ffc.png?1763128933' alt=&#034;Echec de n&#233;gociation TLS avec IE8&#034; width='500' height='419' /&gt;&lt;/p&gt;
&lt;p&gt;IE 8 sur Windows XP n'arrive pas &#224; n&#233;gocier l'ouverture de la connexion s&#233;curis&#233;e avec un site qui n&#233;cessite au minimum TLS 1.1.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH137/https-sslv3-tls1-22fd623b-6c58e.png?1763128933' alt=&#034;D&#233;tail r&#233;seau de la discussion entre le navigateur et le serveur&#034; width='500' height='137' /&gt;&lt;/p&gt;
&lt;p&gt;Les traces r&#233;seau r&#233;v&#232;lent que le navigateur a fait deux tentatives, une fois en TLS 1.0 et une fois en SSLv3, le serveur n'a pas m&#234;me daign&#233; lui r&#233;pondre, le navigateur se retrouve alors d&#233;boussol&#233; et ne peut afficher qu'un message d'erreur assez g&#233;n&#233;rique. Ce point est &#224; prendre en compte lorsque l'on planifie de d&#233;sactiver TLS 1.0 sur un site existant, il faut en effet pr&#233;venir les derniers utilisateurs qui se pr&#233;sentent encore avec de vieux clients web du changement &#224; venir bien avant la d&#233;sactivation effective.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Le client web propose, le serveur web&#8230; explose&lt;/h2&gt;
&lt;p&gt;Dans le &#171; &lt;i lang=&#034;en&#034;&gt;Client Hello&lt;/i&gt; &#187;, qui correspond au premier message adress&#233; par le client au serveur, figurent la version la plus &#233;lev&#233;e et la plus basse du protocole que le client propose d'utiliser, de nos jours on y trouve tr&#232;s souvent TLS 1.2 et TLS 1.0, mais ceci n'est qu'une convention qui laisse d'ailleurs planer un doute quant au fait que TLS 1.1 puisse &#234;tre utilis&#233; ou non.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH229/https-sslv3-tls1-a78b55f1-c0690.png?1763128933' alt=&#034;D&#233;tail d'un Client Hello&#034; width='500' height='229' /&gt;&lt;/p&gt;
&lt;p&gt;Pour des raisons historiques et de nombreuses mises en &#339;uvres bancales, cet aspect est un brin moins trivial qu'il ne devrait l'&#234;tre. En effet lorsque les premiers clients aptes &#224; utiliser TLS 1.0 ont entam&#233; le dialogue avec des serveurs qui ne connaissaient que SSLv3, les n&#233;gociations ne se sont pas d&#233;roul&#233;es exactement comme pr&#233;vues&#8230; En th&#233;orie les serveurs en question auraient d&#251; d&#233;cliner la proposition d'utiliser TLS 1.0 et se rabattre sur SSLv3 &#224; la place, en pratique certains serveurs se sont fig&#233;s d'effroi et dans le mutisme le plus total.&lt;/p&gt;
&lt;p&gt;Ce ph&#233;nom&#232;ne porte le nom d'intol&#233;rance de version et a forc&#233; les clients web &#224; &#233;mettre une premi&#232;re tentative de n&#233;gociation pour TLS 1.0 puis, en cas d'&#233;chec ou en l'absence de r&#233;ponse, une seconde tentative pour SSLv3, exactement comme on le voit sur les traces r&#233;seau d'IE 8 ci-dessus.&lt;/p&gt;
&lt;p&gt;Sans grande surprise le m&#234;me ph&#233;nom&#232;ne, un peu att&#233;nu&#233;, s'est produit lorsque les premiers clients TLS 1.1/1.2 se sont adress&#233;s &#224; des serveurs qui ne connaissaient que TLS 1.0 et SSLv3. Certains sites ont alors conseill&#233; &#224; leurs utilisateurs de d&#233;sactiver TLS 1.2 et TLS 1.1 dans les &#171; Options Internet &#187; de Windows, les privant donc de ces versions sur tous les autres sites !&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH457/https-sslv3-tls1-716d517c-8c73d.png?1763128933' alt=&#034;TLS 1.2 et 1.1 d&#233;sactiv&#233;s sous IE&#034; width='500' height='457' /&gt;&lt;/p&gt;
&lt;p&gt;Si les deux cases &#171; Utiliser TLS 1.2 &#187; et &#171; Utiliser TLS 1.1 &#187; sont d&#233;coch&#233;es Internet Explorer devient incapable de n&#233;gocier les versions de TLS les plus r&#233;centes. Du coup il n'est pas tout &#224; fait possible de faire le lien entre un &lt;i lang=&#034;en&#034;&gt;User Agent&lt;/i&gt; et le support de TLS 1.2 vu que celui-ci peut &#234;tre d&#233;sactiv&#233; par ailleurs, ce qui implique de se pencher directement sur les logs de n&#233;gociations TLS pour, par exemple, d&#233;terminer la part exacte des clients qui n&#233;cessitent TLS 1.0 sur un site donn&#233;.&lt;/p&gt;
&lt;p&gt;La bonne nouvelle est que ce probl&#232;me d'intol&#233;rance ne se produira pas avec TLS 1.3. En effet, lors de la conception de ce dernier, il a &#233;t&#233; &#233;valu&#233; qu'environ 2% des serveurs web s&#233;curis&#233;s seraient intol&#233;rants aux clients qui chercheraient &#224; n&#233;gocier TLS 1.3 d'entr&#233;e de jeu. De ce fait, les clients TLS 1.3 se pr&#233;sentent en d&#233;finitive comme de simples clients TLS 1.2 mais arborent en plus une nouvelle extension qui permet une &#233;num&#233;ration claire des versions du protocole que le client souhaite utiliser. Les extensions inconnues &#233;tant proprement ignor&#233;es par les serveurs web, il ne devrait plus y avoir de probl&#232;me d'intol&#233;rance.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH176/https-sslv3-tls1-fa3885f7-b68a9.png?1763128933' alt=&#034;Versions de TLS support&#233;es&#034; width='500' height='176' /&gt;&lt;/p&gt;
&lt;p&gt;Firefox 51.0.1 indique clairement qu'il souhaite utiliser TLS 1.3 (sur la base du &lt;i lang=&#034;en&#034;&gt;draft&lt;/i&gt; 18).&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Des temps anciens &#224; l'&#232;re post NIST&lt;/h2&gt;
&lt;p&gt;Ces derni&#232;res ann&#233;es la majorit&#233; des failles de s&#233;curit&#233; ou faiblesses rendues publiques comme &lt;i lang=&#034;en&#034;&gt;BEAST, POODLE, DROWN, SWEET32&#8230;&lt;/i&gt; concernent les versions les plus anciennes du protocole SSL/TLS. En compilant sur plus de 20 ans les diff&#233;rentes &#233;volutions de ce protocole, on comprend mieux pourquoi TLS 1.3 devenait n&#233;cessaire et repr&#233;sente une &#233;tape significative vers un Internet plus s&#251;r.&lt;/p&gt;
&lt;p&gt;Un des objectifs de cette partie est de montrer que ce qui d&#233;finit SSL/TLS n'est pas une sp&#233;cification monolithique unique mais plut&#244;t un patchwork de RFC apparues progressivement et dans lesquelles les diff&#233;rentes mises en &#339;uvres logicielles vont piocher plus ou moins d'&#233;l&#233;ments ; les explications d&#233;taill&#233;es concernant certains concepts (auxquels sont souvent associ&#233; des acronymes : CBC, GCM, ECDHE&#8230;) ne seront fournies que dans les articles relatifs aux certificats et aux suites cryptographiques.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;SSLv2 (1995)&lt;/h2&gt;
&lt;p&gt;SSL version 2 constitue la version initiale propos&#233;e par Netscape, la version 1 n'ayant jamais servi. SSLv2 pr&#233;sente des lacunes importantes et ne devrait plus &#234;tre utilis&#233; depuis tr&#232;s longtemps, tr&#232;s tr&#232;s longtemps m&#234;me, l'IETF s'est clairement prononc&#233; sur ce sujet en 2011 dans la &lt;a href=&#034;https://tools.ietf.org/html/rfc6176&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 6176&lt;/a&gt;. Toutefois, au d&#233;but 2016, l'attaque &lt;a href=&#034;https://drownattack.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;DROWN&lt;/i&gt;&lt;/a&gt; a mis en lumi&#232;re sa pr&#233;sence sur de nombreux serveurs HTTPS et SMTP alors que les clients web pouvant se connecter de la sorte ont disparu depuis belle lurette, et plus aucune autorit&#233; de certification ne peut &#233;mettre de &#171; certificat SSL &#187; avec des caract&#233;ristiques adapt&#233;es aux clients web qui ne conna&#238;traient que SSLv2. Ceci est malheureusement symptomatique de n&#233;gligences de s&#233;curit&#233; &#233;l&#233;mentaires : d&#233;faut de mise &#224; jour et reconduction de param&#232;tres par m&#233;connaissance.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;SSLv3 (1996, &lt;a href=&#034;https://tools.ietf.org/html/rfc6101&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 6101&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Conscient des faiblesses de SSLv2, Netscape propose SSLv3 d&#232;s l'ann&#233;e suivante. Cette version est rest&#233;e active et tr&#232;s largement utilis&#233;e pendant pr&#232;s de 18 ans (le long r&#232;gne d'IE 6 et la pr&#233;dominance de Windows XP y sont pour quelque chose). En septembre 2014, l'attaque &lt;a href=&#034;https://www.openssl.org/~bodo/ssl-poodle.pdf&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;POODLE&lt;/i&gt;&lt;/a&gt; scelle le sort de SSLv3 car la seule contre-mesure possible est sa d&#233;sactivation au profit de TLS. Mais cette version &#233;tait d&#233;j&#224; d&#233;cri&#233;e depuis des ann&#233;es comme en t&#233;moigne les tutoriels de &lt;a href=&#034;http://disablessl3.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;d&#233;sactivation de SSLv3&lt;/a&gt;, la &lt;a href=&#034;https://tools.ietf.org/html/rfc7568&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7568&lt;/a&gt; de 2015 en interdit l'usage et pr&#233;conise TLS 1.2 &#224; la place. Il est &#224; noter qu'en raison de &lt;i lang=&#034;en&#034;&gt;POODLE&lt;/i&gt;, la majorit&#233; des navigateurs ont d&#233;finitivement d&#233;sactiv&#233; SSLv3 vers la fin 2014.&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;&#192; moins de vouloir &#224; tout prix &#234;tre compatible avec Internet Explorer sur Windows XP Service Pack 2 (le SP3 apporte TLS 1.0 qu'il faut toutefois activer manuellement dans &#171; Options Internet &#187;) il n'y a strictement aucune raison d'activer SSLv3 c&#244;t&#233; serveur.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;TLS 1.0 (1999, &lt;a href=&#034;https://tools.ietf.org/html/rfc2246&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 2246&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Pour concilier les divergences entre Microsoft et Netscape concernant l'&#233;volution de SSL, le protocole est confi&#233; &#224; l'IETF &#8212;&lt;i lang=&#034;en&#034;&gt;Internet Engineering Task Force&lt;/i&gt;&#8212; et renomm&#233; TLS &#8212;&lt;i lang=&#034;en&#034;&gt;Transport Layer Security&lt;/i&gt;&#8212; au passage. &#192; cette &#233;poque, TLS 1.0 ne constituait qu'une &#233;volution assez l&#233;g&#232;re de SSLv3 (en interne l'identification de version est d'ailleurs 3.1). TLS r&#233;vise cependant une partie de l'&#233;tablissement de la liaison (le &lt;i lang=&#034;en&#034;&gt;handshake&lt;/i&gt;) et apporte de la flexibilit&#233; avec l'introduction d'extensions optionnelles qui permettent de faire &#233;voluer le protocole sans revoir ses bases et constamment r&#233;viser son num&#233;ro de version.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH248/https-sslv3-tls1-5649b84e-aac29.png?1763128933' alt=&#034;Exemple de Client Hello avec des extensions&#034; width='500' height='248' /&gt;&lt;/p&gt;
&lt;p&gt;Les premi&#232;res ann&#233;es l'utilisation des extensions est rest&#233;e tr&#232;s limit&#233;e, le &lt;i lang=&#034;en&#034;&gt;Client Hello&lt;/i&gt; produit par IE sur Windows XP ne d&#233;passera jamais cette forme rudimentaire.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;AES &#8212;&lt;i lang=&#034;en&#034;&gt;Advanced Encryption Standard&lt;/i&gt;&#8212; (2002, &lt;a href=&#034;https://tools.ietf.org/html/rfc3268&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 3268&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Le chiffrement sym&#233;trique AES a &#233;t&#233; int&#233;gr&#233; dans TLS quelques ann&#233;es apr&#232;s la parution de TLS 1.0, il est aujourd'hui tr&#232;s largement r&#233;pandu et restera vraisemblablement indispensable encore de nombreuses ann&#233;es.&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;Parmi les am&#233;liorations apport&#233;es &#224; Secure Channel dans Windows Vista par rapport &#224; Windows XP figurent la mise en &#339;uvre de suites cryptographiques qui proposent le chiffrement AES et dans un autre domaine le SNI&#8230;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;SNI &#8212;&lt;i lang=&#034;en&#034;&gt;Server Name Indication&lt;/i&gt;&#8212; (2003, &lt;a href=&#034;https://tools.ietf.org/html/rfc3546&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 3546&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;SNI est une extension TLS qui rev&#234;t d&#233;sormais une importance toute particuli&#232;re ! En effet, pr&#233;c&#233;demment SSL partait du principe qu'un seul domaine &#233;tait h&#233;berg&#233; par adresse IP et &#224; aucun moment le protocole ne faisait mention du domaine vis&#233;&#8230; Un peu &#224; l'image de HTTP/1.1 qui a permis l'h&#233;bergement virtuel avec l'en-t&#234;te &#171; &lt;i lang=&#034;en&#034;&gt;host&lt;/i&gt; &#187;, TLS donne la possibilit&#233; d'indiquer le nom du serveur via l'extension SNI, ce qui permet donc d'h&#233;berger plusieurs sites s&#233;curis&#233;s sur une m&#234;me adresse IP sans avoir &#224; mutualiser le certificat et la cl&#233; priv&#233;e.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH176/https-sslv3-tls1-511644e5-631db.png?1763128933' alt=&#034;Extensions SNI (exemple sur Openweb)&#034; width='500' height='176' /&gt;&lt;/p&gt;
&lt;p&gt;Les clients web incapables de g&#233;rer SNI sont en voie de disparition (voir &lt;a href=&#034;http://caniuse.com/#feat=sni&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Can I use : SNI&lt;/a&gt;) et les h&#233;bergeurs ont donc d&#233;sormais massivement recours &#224; SNI pour offrir HTTPS &#224; tout le monde.&lt;/p&gt;
&lt;p&gt;Aujourd'hui TLS 1.0 montre de s&#233;rieux signes de fatigue, car les suites cryptographiques qui y sont commun&#233;ment associ&#233;es reposent sur des m&#233;thodes de chiffrement dont la cryptanalyse r&#233;v&#232;le d&#233;sormais les faiblesses, on notera :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; l'interdiction du chiffrement RC4 dans la &lt;a href=&#034;https://tools.ietf.org/html/rfc7465&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7465&lt;/a&gt; voir &#233;galement &lt;a href=&#034;http://www.rc4nomore.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;RC4 NOMORE&lt;/i&gt;&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; un probl&#232;me de cha&#238;nage et d'initialisation des blocs CBC &lt;a href=&#034;http://commandlinefanatic.com/cgi-bin/showarticle.cgi?article=art027&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;BEAST Attack&lt;/i&gt;&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; ou encore les blocs de 64 bits qui fragilisent le Triple DES &lt;a href=&#034;https://sweet32.info/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;SWEET32&lt;/i&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;De ce fait, configurer TLS 1.0 correctement est un exercice de plus en plus p&#233;rilleux, le PCI SSC &#8212;&lt;i lang=&#034;en&#034;&gt;Payment Card Industry Security Standards Council&lt;/i&gt;&#8212; (Visa, Mastercard et les autres r&#233;seaux de cartes) a banni cette version des paiements CB en ligne et par l&#224; m&#234;me des sites d'e-commerce dans PCI DSS 3.2 depuis la &lt;a href=&#034;https://blog.pcisecuritystandards.org/migrating-from-ssl-and-early-tls&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;mi-2018&lt;/a&gt;. Le 15 octobre 2018, &lt;a href=&#034;https://webkit.org/blog/8462/deprecation-of-legacy-tls-1-0-and-1-1-versions/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Apple&lt;/a&gt;, &lt;a href=&#034;https://security.googleblog.com/2018/10/modernizing-transport-security.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Google&lt;/a&gt;, &lt;a href=&#034;https://blogs.windows.com/msedgedev/2018/10/15/modernizing-tls-edge-ie11/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Microsoft&lt;/a&gt; et &lt;a href=&#034;https://blog.mozilla.org/security/2018/10/15/removing-old-versions-of-tls/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Mozilla&lt;/a&gt; ont annonc&#233; conjointement la fin de la prise en charge des versions 1.0 et 1.1 de TLS dans leurs navigateurs &#224; compter de mars 2020 (la pand&#233;mie de Covid-19 a toutefois introduit un sursis de quelques mois). Pour satisfaire aux exigences de PCI DSS, certains h&#233;bergeurs proposent en option des configurations uniquement bas&#233;es sur TLS 1.2.&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;D&#233;sactiver TLS 1.0 revient &#224; tourner le dos &#224; environ 3 % des navigateurs utilis&#233;s et plus particuli&#232;rement IE 8 et ant&#233;rieurs sur Windows XP et IE 9 et ant&#233;rieurs sur Windows Vista, les versions de Safari ant&#233;rieures &#224; la 7 sur OS X ainsi que le navigateur int&#233;gr&#233; (pas Chrome) des appareils Android ant&#233;rieurs &#224; 5.0.&lt;/p&gt;
&lt;p&gt;
Avec l'arr&#234;t de la branche &lt;a href=&#034;https://support.mozilla.org/fr/kb/fin-support-windows-xp-vista&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;ESR 52.9.0 de Firefox&lt;/a&gt;, Windows XP et Vista se retrouvent sans navigateur maintenu, Chrome ayant d&#233;j&#224; jet&#233; l'&#233;ponge (&lt;a href=&#034;https://chrome.googleblog.com/2015/11/updates-to-chrome-platform-support.html&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;notification de Chrome 49&lt;/a&gt;), il devient donc de plus en plus dangereux d'utiliser ces syst&#232;mes.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;TLS 1.1 (2006, &lt;a href=&#034;https://tools.ietf.org/html/rfc4346&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 4346&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;TLS 1.1 est une version de transition qui consolide certaines RFC interm&#233;diaires et inclut une modification de l'initialisation des blocs CBC (suite &#224; un signalement fait en 2001) qui pr&#233;vient l'attaque &lt;i lang=&#034;en&#034;&gt;BEAST&lt;/i&gt; qui n'apparaitra toutefois qu'en 2011. Cette attaque a r&#233;v&#233;l&#233; &#224; quel point la cryptographie sur le web &#233;tait en retard, en effet en 2011 aucun navigateur ne peut traiter TLS 1.1 ou 1.2 et il en va pratiquement de m&#234;me pour les serveurs (OpenSSL &#233;volue alors malheureusement tr&#232;s lentement).&lt;/p&gt;
&lt;p&gt;Le rattrapage brutal effectu&#233; depuis lors explique pourquoi TLS 1.1 est une version que l'on peut pratiquement oublier, en effet la gestion de TLS 1.1 est tr&#232;s souvent apparue simultan&#233;ment avec celle de TLS 1.2. La question qui se pose au niveau de la configuration d'un serveur est donc de savoir jusqu'&#224; quand il doit encore accepter TLS 1.0 avant de passer exclusivement &#224; TLS 1.2 et plus r&#233;cent.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH290/httpd-ssl-conf-887ca8bf-94e52.png?1763128933' alt=&#034;Commentaires du fichier de configuration Apache 2.4.x &#224; propos de TLS&#034; width='500' height='290' /&gt;&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;Les commentaires du fichier de configuration httpd-tls.conf d'Apache 2.4.x sugg&#232;rent de d&#233;sactiver TLS 1.0 d&#232;s que possible et de ne conserver que TLS 1.2 d'actif &#224; compter de la fin 2016.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;ECC &#8212;&lt;i lang=&#034;en&#034;&gt;Elliptic Curve Cryptography&lt;/i&gt;&#8212; (2006, &lt;a href=&#034;https://tools.ietf.org/html/rfc4492&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 4492&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;La cryptographie &#224; base de courbes elliptiques est une rupture technologique (enfin math&#233;matique) par rapport aux algorithmes pr&#233;c&#233;dents qui reposent souvent sur de grands nombres entiers et la difficult&#233; de les factoriser (type RSA). Utiliser les &#233;quivalents ECxxx pr&#233;sente quelques avantages :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; la description d'un point sur une courbe est un objet bien plus petit ;&lt;/li&gt;&lt;li&gt; les calculs sont globalement plus rapides ;&lt;/li&gt;&lt;li&gt; les plus petites cl&#233;s EC offrent d&#233;j&#224; un niveau de s&#233;curit&#233; un cran au-dessus de ce qui se fait commun&#233;ment (&#233;quivalent &#224; 3072 bits en asym&#233;trique).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Utiliser en priorit&#233; l'algorithme d'&#233;change de cl&#233; ECDHE est d&#233;sormais unanimement conseill&#233;.&lt;/p&gt;
&lt;p&gt;En revanche, l'utilisation de cl&#233;s et de signatures ECDSA est encore rare dans les certificats par rapport &#224; l'omnipr&#233;sent RSA mais celle-ci devrait connaitre un regain d'int&#233;r&#234;t dans les prochaines ann&#233;es avec la disparition des clients web incompatibles (principalement IE et Chrome sur Windows XP).&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH389/https-sslv3-tls1-4a7befc9-b4d11.png?1763128933' alt=&#034;Extensions &#224; base de courbes elliptiques dans un client hello&#034; width='500' height='389' /&gt;&lt;/p&gt;
&lt;p&gt;L'int&#233;r&#234;t de l'ECC est tel qu'il a souvent &#233;t&#233; int&#233;gr&#233; dans des composants par ailleurs limit&#233;s &#224; TLS 1.0 comme ici IE sur Windows Vista mais &#233;galement les anciennes versions d'Android et les syst&#232;mes d'Apple.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;TLS 1.2 (2008, &lt;a href=&#034;https://tools.ietf.org/html/rfc5246&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 5246&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;TLS 1.2 apporte une &#233;volution importante : AEAD &#8212;&lt;i lang=&#034;en&#034;&gt;Authenticated Encryption with Associated Data&lt;/i&gt;&#8212; le chiffrement authentifi&#233; (d&#233;fini en propre dans la &lt;a href=&#034;https://tools.ietf.org/html/rfc5116&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 5116&lt;/a&gt;) sous la forme des modes GCM et CCM. Malheureusement TLS 1.2 autorise l'usage de vieilles suites cryptographiques ce qui permet de r&#233;aliser des m&#233;langes de modernit&#233; et d'archa&#239;sme potentiellement dangereux.&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;Le simple fait activer TLS 1.2 c&#244;t&#233; serveur ne garantit pas d'avoir une configuration de qualit&#233;, c'est n&#233;cessaire mais pas suffisant. Le choix et l'ordre des suites cryptographiques utilisables ainsi que, dans une moindre mesure, le certificat employ&#233; vont &#233;galement jouer un r&#244;le d&#233;terminant.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;AES-GCM (2008, &lt;a href=&#034;https://tools.ietf.org/html/rfc5288&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 5288&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;GCM &#8212;&lt;i lang=&#034;en&#034;&gt;Galois Counter Mode&lt;/i&gt;&#8212; est le premier mode de chiffrement authentifi&#233; d&#233;fini et le plus utilis&#233; de nos jours&#8230;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;HMAC SHA2, ECC et AES-GCM (2008, &lt;a href=&#034;https://tools.ietf.org/html/rfc5289&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 5289&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;&#8230;mais l'&#233;change de cl&#233; ECDHE &#233;tant &#224; privil&#233;gier, les suites cryptographiques consid&#233;r&#233;es comme &#233;tant les plus s&#251;res proviennent de cette seconde RFC, qui d&#233;finit &#233;galement les HMAC en SHA-2 pour les modes CBC.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;AES-CCM (2012, &lt;a href=&#034;https://tools.ietf.org/html/rfc6655&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 6655&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;L'autre mode de chiffrement authentifi&#233; n'a &#233;t&#233; ajout&#233; que quelques ann&#233;es apr&#232;s sous la forme de CCM &#8212;&lt;i lang=&#034;en&#034;&gt;Counter with CBC-MAC&lt;/i&gt;&#8212; ce qui a comme effet qu'aucun navigateur web ne l'utilise actuellement, il est disponible dans OpenSSL depuis la version 1.1.0.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;ALPN &#8212;&lt;i lang=&#034;en&#034;&gt;Application-Layer Protocol Negotiation&lt;/i&gt;&#8212; (2014, &lt;a href=&#034;https://tools.ietf.org/html/rfc7301&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7301&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Cette extension permet d'indiquer d&#232;s la n&#233;gociation TLS que le client web est dispos&#233; &#224; faire transiter autre chose que HTTP, c'est-&#224;-dire HTTP/2 (h2) ou &#233;ventuellement son anc&#234;tre SPDY (spdy/3), si le serveur en est capable il va donc basculer vers le nouveau protocole. Il est &#224; noter que pour assurer un niveau de s&#233;curit&#233; minimal HTTP/2 prohibe une grande quantit&#233; de suites cryptographiques dont la liste d'exclusion figure dans l'annexe A : TLS 1.2 &lt;i lang=&#034;en&#034;&gt;Cipher Suite Black List&lt;/i&gt; de la &lt;a href=&#034;https://tools.ietf.org/html/rfc7540&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7540&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH194/https-sslv3-tls1-c48bc1ee-dc1ac.png?1763128933' alt=&#034;Protocole ALPN dans un client hello&#034; width='500' height='194' /&gt;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Encrypt then MAC&lt;/i&gt; (2014, &lt;a href=&#034;https://tools.ietf.org/html/rfc7366&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7366&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Les op&#233;rations disjointes de chiffrement et de contr&#244;le d'int&#233;grit&#233; op&#233;r&#233;es lors de l'utilisation du mode CBC se font dans un ordre qui n'est plus consid&#233;r&#233; comme le plus s&#251;r. Cette RFC introduit une subtile modification pour remettre ces op&#233;rations dans le bon ordre &#224; l'aide d'une &#233;ni&#232;me extension&#8230; mais ceci arrive quelque peu tardivement car les clients et serveurs susceptibles de la mettre en &#339;uvre disposent d&#233;j&#224; du chiffrement authentifi&#233; sous la forme du mode GCM qui n'est pas confront&#233; &#224; ce probl&#232;me. En d&#233;finitive il semble qu'aucun client web n'int&#232;gre cette modification et TLS 1.3 r&#233;serve un sort tout particulier au mode CBC&#8230;&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&lt;i lang=&#034;en&#034;&gt;TLS Fallback SCSV&lt;/i&gt; (2015, &lt;a href=&#034;https://tools.ietf.org/html/rfc7507&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7507&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Comme les versions les plus anciennes de TLS/SSL sont &#233;galement les moins s&#251;res, pour perp&#233;trer une attaque un assaillant pouvant s'interposer entre le client et le serveur (on parle de MITM &#8212;&lt;i lang=&#034;en&#034;&gt;Man In The Middle&lt;/i&gt;&#8212; en anglais) pourrait proc&#233;der &#224; une attaque par repli qui consiste &#224; proprement &#233;liminer les demandes de n&#233;gociations pour TLS 1.2 et TLS 1.0 et ne laisser passer que celle pour SSLv3.&lt;/p&gt;
&lt;p&gt;Le serveur ne voyant arriver que cette derni&#232;re il n&#233;gocierait donc cette version sans avoir la moindre notion qu'il s'est pass&#233; quelque chose sur le r&#233;seau. Mais si le client ins&#232;re la SCSV &#8212;&lt;i lang=&#034;en&#034;&gt;Signaling Cipher Suite Value&lt;/i&gt;&#8212; &#224; la fin de la liste des suites cryptographiques qu'il souhaite utiliser lors de ses tentatives en mode d&#233;grad&#233;, le serveur aura la possibilit&#233; que se rendre compte qu'il n'a pas affaire &#224; un vieux client mais au contraire &#224; un client r&#233;cent dont les pr&#233;c&#233;dentes demandes ne lui sont pas parvenues, il pourra donc l'alerter en retour.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Extended Master Secret&lt;/i&gt; (2015, &lt;a href=&#034;https://tools.ietf.org/html/rfc7627&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7627&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Pour lutter contre une forme d'attaque par interposition dite &lt;i lang=&#034;en&#034;&gt;Triple Handshake&lt;/i&gt; cette RFC propose d'am&#233;liorer le calcul du secret partag&#233; en y incorporant une empreinte portant sur l'ensemble des donn&#233;es &#233;chang&#233;es lors de l'&#233;tablissement de la liaison.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Curve25519 et Curve448 (2016, &lt;a href=&#034;https://tools.ietf.org/html/rfc7748&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7748&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Une pierre d'achoppement qui a retard&#233; l'adoption de la cryptographie &#224; base de courbes elliptiques est le choix des courbes en question, en effet certains redoutaient que les courbes propos&#233;es par le NIST &#8212;&lt;i lang=&#034;en&#034;&gt;National Institute of Standards and Technology&lt;/i&gt;&#8212; comme P-256, P-384 et P-521 ne pr&#233;sentent des propri&#233;t&#233;s douteuses mais de prime abord bien cach&#233;es. Les nouvelles courbes 25519 et 448 issues des travaux de &lt;a href=&#034;https://fr.wikipedia.org/wiki/Daniel_J._Bernstein&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Daniel J. Bernstein&lt;/a&gt; devraient soulever bien moins d'objections.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH193/https-sslv3-tls1-08fa2500-eed43.png?1763128933' alt=&#034;Courbe 25519 dans un client hello&#034; width='500' height='193' /&gt;&lt;/p&gt;
&lt;p&gt;Chrome et Firefox proposent d&#233;j&#224; d'utiliser la fonction x25519 pour les &#233;changes de cl&#233; ECDHE. Au passage : tout ce qui appara&#238;t ici comme &#171; &lt;i lang=&#034;en&#034;&gt;Unknown&lt;/i&gt; &#187; ne refl&#232;te pas une lacune de Wireshark, mais correspond &#224; des valeurs fictives de type GREASE &#8212;&lt;i lang=&#034;en&#034;&gt;Generate Random Extensions And Sustain Extensibility&lt;/i&gt;&#8212; dont le but est de stresser en permanence les impl&#233;mentations TLS c&#244;t&#233; serveur pour voir si elles r&#233;sistent a des donn&#233;es inattendues, ce syst&#232;me n'est qu'un brouillon &#224; l'heure actuelle, voir &lt;a href=&#034;https://tools.ietf.org/html/draft-ietf-tls-grease-00&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;draft-ietf-tls-grease&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;ChaCha20-Poly1305 (2016, &lt;a href=&#034;https://tools.ietf.org/html/rfc7905&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 7905&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;ChaCha20 est un nouvel algorithme de chiffrement par flux assez simple et rapide d&#233;riv&#233; des travaux de Daniel J. Bernstein. Comme il est particuli&#232;rement adapt&#233; aux processeurs ARM (ceux qu'on trouve commun&#233;ment dans les t&#233;l&#233;phones et autres tablettes), il s'est tr&#232;s vite retrouv&#233; dans Chrome et sur les serveurs de Google. Firefox n'est pas en reste, de m&#234;me pour Safari depuis macOS High Sierra, mais il faut OpenSSL 1.1.0 ou une version r&#233;cente de LibreSSL pour en disposer c&#244;t&#233; serveur.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;EdDSA &#8212;&lt;i lang=&#034;en&#034;&gt;Edwards-curve Digital Signature Algorithm&lt;/i&gt;&#8212; (2017, &lt;a href=&#034;https://tools.ietf.org/html/rfc8032&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;RFC 8032&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;EdDSA est un algorithme de signature que l'on doit &#224;&#8230; Daniel J. Bernstein et son &#233;quipe, il est relativement similaire &#224; ECDSA mais est plus rapide et fait exclusivement usage des courbes Ed25519 et Ed448.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;TLS 1.3 (2018, &lt;a href=&#034;https://tools.ietf.org/html/rfc8446&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;RFC 8446&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;TLS 1.3 est une &#233;volution tr&#232;s importante, elle apporte :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; une vitesse accrue (en acc&#233;l&#233;rant la n&#233;gociation en r&#233;duisant les allers-retours entre le client et le serveur) ;&lt;/li&gt;&lt;li&gt; une s&#233;curit&#233; renforc&#233;e (en d&#233;sactivant ou am&#233;liorant tout ce qui pouvait &#234;tre abus&#233; dans TLS 1.2 et en incluant de nouveaux algorithmes).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH452/https-sslv3-tls1-16a2ebbf-c7a4b.png?1763128933' alt=&#034;Processus complet d'&#233;tablissement de la liaison s&#233;curis&#233;e sous TLS 1.2&#034; width='500' height='452' /&gt;&lt;/p&gt;
&lt;p&gt;Le processus complet d'&#233;tablissement de la liaison s&#233;curis&#233;e ressemble le plus souvent &#224; ces deux vagues d'aller-retour avec TLS 1.2.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH390/https-sslv3-tls1-2f22a650-67e86.png?1763128933' alt=&#034;Processus complet d'&#233;tablissement de la liaison s&#233;curis&#233;e sous TLS 1.3&#034; width='500' height='390' /&gt;&lt;/p&gt;
&lt;p&gt;Avec TLS 1.3 l'ordre change, des anticipations ont lieu pour r&#233;duire les &#233;changes au minimum, comme le client &#224; encore la main apr&#232;s le &#171; &lt;i lang=&#034;en&#034;&gt;Finished&lt;/i&gt; &#187; il peut transmettre une requ&#234;te HTTP GET dans la foul&#233;e, r&#233;duisant en pratique l'&#233;change complet &#224; un seul aller-retour (1 RTT), ce qui devrait produire un gain cons&#233;quent lorsque le client et le serveur sont tr&#232;s &#233;loign&#233;s ou lorsque le client passe par un r&#233;seau de communication mobile, la latence &#233;tant dans ces deux cas importante.&lt;/p&gt;
&lt;p&gt;Il est &#224; noter que le m&#233;canisme de reprise de session a &#233;galement &#233;t&#233; compl&#232;tement remani&#233; pour &#234;tre plus rapide. L'implication de Google dans le d&#233;veloppement et la promotion de HTTP/2 et TLS 1.3 et la large diffusion de HTTPS est consid&#233;rable. Il n'est donc pas impossible qu'&#224; l'avenir ils cherchent &#224; acc&#233;l&#233;rer l'adoption de TLS 1.3 en lui donnant un petit coup de pouce au niveau du classement des r&#233;sultats de recherche, pour l'instant il n'y a rien de tel mais &#171; plus s&#251;r et plus rapide &#187; est un bon facteur de diff&#233;rentiation qui peut &#234;tre associ&#233; &#224; TLS 1.3.&lt;/p&gt;
&lt;p&gt;TLS 1.3 a la particularit&#233; d'&#234;tre la premi&#232;re version &#224; largement s'affranchir des recommandations du NIST et de ce fait d'une &#233;ventuelle influence de la NSA (dont certaines pratiques visant &#224; &lt;a href=&#034;https://www.scientificamerican.com/article/nsa-nist-encryption-scandal/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;affaiblir les syst&#232;mes cryptographiques&lt;/a&gt; ont &#233;t&#233; mises en lumi&#232;re). Cela se traduit par l'adoption d'algorithmes d&#233;riv&#233;s des travaux de Daniel J. Bernstein (x25519, EdDSA, ChaCha20&#8230;), de ce fait on pourra &#224; l'avenir basculer du tout NIST vers du tout DJB. Il est toujours possible d'utiliser les courbes NIST, ECDSA et AES avec TLS 1.3, mais il existe d&#233;sormais une alternative pour chacun.&lt;/p&gt;
&lt;p&gt;Par ailleurs un sacr&#233; coup de balai a &#233;t&#233; donn&#233; dans les vieilles suites cryptographiques, le m&#233;canisme d'&#233;change de cl&#233; le plus simple (celui chiffrant le secret partag&#233; avec la cl&#233; RSA publique du serveur et qui n'offrait donc pas de confidentialit&#233; persistante) n'est plus utilisable, le mode CBC disparait de m&#234;me que les vieux algorithmes de chiffrement comme Triple DES. L'&#233;limination de tout ce qui n'a pas fait preuve de robustesse contribue &#224; rendre TLS 1.3 s&#251;r par d&#233;faut (contrairement &#224; TLS 1.2 qui restait tourn&#233; vers le pass&#233;) et simplifie grandement sa configuration. Le seul point sensible, a priori, est la possibilit&#233; de faire du 0 RTT mais qui ne devrait pas &#234;tre activ&#233; par d&#233;faut.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Mettre fin aux erreurs du pass&#233;s&lt;/h2&gt;
&lt;p&gt;Le fait que l'on trouve encore autant de serveurs configur&#233;s avec une r&#233;trocompatibilit&#233; bien trop &#233;tendue ou des suites cryptographiques d&#233;pass&#233;es a probablement plusieurs origines, configurer SSL/TLS n'a pas toujours &#233;t&#233; simple et clairement document&#233; (encore moins en fran&#231;ais) et, une fois que cela fonctionne (les clients arrivent &#224; se connecter), il peut &#234;tre tentant de ne plus y toucher pendant quelques ann&#233;es&#8230; c'&#233;tait d'autant plus facile lorsqu'il existait des certificats valables quatre ou m&#234;me cinq ans. Les outils comme &lt;a href=&#034;https://www.ssllabs.com/ssltest/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;SSL Server Test&lt;/i&gt;&lt;/a&gt; de &lt;i lang=&#034;en&#034;&gt;SSL Labs&lt;/i&gt; ou le redoutable &lt;a href=&#034;https://tls.imirhil.fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;CryptCheck&lt;/a&gt; d'Aeris qui attribuent des notes et proposent des am&#233;liorations ou &lt;a href=&#034;https://mozilla.github.io/server-side-tls/ssl-config-generator/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;le g&#233;n&#233;rateur de configuration de Mozilla&lt;/a&gt; qui s'efforce de simplifier la configuration de diff&#233;rents serveurs sont encore trop m&#233;connus.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH124/https-sslv3-tls1-9601b68b-8f3f3.png?1763128933' alt=&#034;g&#233;n&#233;rateur de configuration de Mozilla&#034; width='500' height='124' /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH151/https-sslv3-tls1-039b7d78-2f759.png?1763128934' alt=&#034;Notes SSL Labs&#034; width='500' height='151' /&gt;&lt;/p&gt;
&lt;p class=&#034;remarque_important&#034;&gt;Le syst&#232;me de notation de &lt;i lang=&#034;en&#034;&gt;SSL Labs&lt;/i&gt; &#233;volue r&#233;guli&#232;rement pour s'adapter aux nouvelles failles ou bonnes pratiques. Le A obtenu aujourd'hui pourrait fort bien ne plus &#234;tre qu'un B dans quelques mois.&lt;/p&gt;
&lt;p&gt;
En se fixant pour r&#232;gle de n'utiliser que deux ou trois configurations TLS types (les configurations &#171; moderne &#187; et &#171; interm&#233;diaire &#187; propos&#233;es par Mozilla sont un bon d&#233;but), il est bien plus simple de s'assurer r&#233;guli&#232;rement que tous les sites que l'on contr&#244;le restent dans les clous.&lt;/p&gt;
&lt;p&gt;La s&#233;curit&#233; informatique est un processus qui implique de remettre l'ouvrage sur le m&#233;tier fr&#233;quemment et d'assurer un minimum de veille, sur ce sujet je ne peux que conseiller de s'abonner &#224; la lettre mensuelle &#171; &lt;a href=&#034;https://www.feistyduck.com/bulletproof-tls-newsletter/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Bulletproof TLS Newsletter&lt;/i&gt;&lt;/a&gt; &#187; compil&#233;e par l'&#233;diteur du livre qui fait office de r&#233;f&#233;rence dans le domaine : &#171; &lt;a href=&#034;https://www.feistyduck.com/books/bulletproof-ssl-and-tls/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Bulletproof SSL and TLS&lt;/i&gt;&lt;/a&gt; &#187; d'Ivan Risti&#263;.&lt;/p&gt;
&lt;p&gt;Seuls des &#233;lectrochocs comme &lt;i lang=&#034;en&#034;&gt;BEAST, POODLE&lt;/i&gt; ou &lt;a href=&#034;https://fr.wikipedia.org/wiki/Heartbleed&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Heartbleed&lt;/i&gt;&lt;/a&gt; et certaines des r&#233;v&#233;lations d'Edward Snowden ont eu pour effet d'acc&#233;l&#233;rer l'adoption de technologies plus r&#233;centes. Le fait que la crypto sur le web n'&#233;volue qu'en r&#233;action &#224; des incidents majeurs est plut&#244;t inqui&#233;tant, on est loin d'une situation d'am&#233;lioration continue.&lt;/p&gt;
&lt;p&gt;Le lancement de TLS 1.3 se fait dans un contexte totalement diff&#233;rent de celui de TLS 1.2, car TLS 1.3 a vocation &#224; accompagner le passage au tout HTTPS li&#233; aux craintes de piratages et de collectes massives d'informations sur le r&#233;seau. Cette nouvelle version est de plus soutenue par des acteurs de tout premier plan (des &#233;diteurs de navigateurs et des op&#233;rateurs de CDN &#8212;&lt;i lang=&#034;en&#034;&gt;Content Delivery Network&lt;/i&gt;&#8212;) qui ont produit le code n&#233;cessaire pour tester les versions pr&#233;liminaires, ce qui promet une adoption tr&#232;s rapide par quelques acteurs qui g&#233;n&#232;rent un trafic cons&#233;quent.&lt;/p&gt;
&lt;p&gt;Il faudra cependant de longues ann&#233;es avant que TLS 1.3 ne devienne la version la plus r&#233;pandue sur l'ensemble des serveurs web (il faudra entre autres attendre une large diffusion d'OpenSSL 1.1.1 disponible depuis septembre 2018 et qui dispose d'un support &#224; long terme). Il est cependant possible de s'inspirer des recommandations et des changements qui accompagnent TLS 1.3 pour mieux configurer TLS 1.2, se qui se traduit souvent par la d&#233;sactivation de suites cryptographiques qui datent de SSLv3 et TLS 1.0 et un peu d'audace pour adopter plus de cryptographie bas&#233;e sur les courbes elliptiques, y compris dans les certificats.&lt;/p&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;&#201;crire le code informatique qui g&#232;re la cryptographie est une affaire de sp&#233;cialistes, de ce fait les logiciels qui en ont l'usage (y compris les clients et les serveurs web) utilisent des biblioth&#232;ques sp&#233;cialis&#233;es comme : OpenSSL (souvent utilis&#233; par Apache via mod_ssl), LibreSSL (&lt;i lang=&#034;en&#034;&gt;fork&lt;/i&gt; d'OpenSSL par l'&#233;quipe d'OpenBSD, facilement utilisable avec Nginx), BoringSSL (fork d'OpenSSL par Google se trouve dans Chrome et sur les serveurs de Google), &lt;i lang=&#034;en&#034;&gt;Network Security Services&lt;/i&gt; / NSS (de Netscape puis Mozilla se trouve dans Firefox, peut &#234;tre utilis&#233; par Apache via mod_nss), &lt;i lang=&#034;en&#034;&gt;Secure Channel&lt;/i&gt; / &lt;i lang=&#034;en&#034;&gt;SChannel&lt;/i&gt; (de Microsoft, se trouve dans Windows et est utilis&#233; par IE/Edge et IIS) ou encore &lt;i lang=&#034;en&#034;&gt;Secure Transport&lt;/i&gt; (d'Apple, se trouve dans macOS et iOS et est utilis&#233; par Safari). Ceci entra&#238;ne parfois des impr&#233;cisions, c'est notamment le cas avec Internet Explorer pour lequel il faudrait distinguer IE 8 sur XP d'IE 8 sur Vista car les versions de &lt;i lang=&#034;en&#034;&gt;Secure Channel&lt;/i&gt; qui &#233;quipent ces deux syst&#232;mes n'ont pas exactement les m&#234;mes capacit&#233;s.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>SubResource Integrity</title>
		<link>https://openweb.eu.org/articles/subresource-integrity</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/subresource-integrity</guid>
		<dc:date>2017-01-20T07:55:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Nicolas Hoffmann</dc:creator>


		<dc:subject>Expert</dc:subject>
		<dc:subject>D&#233;butant</dc:subject>
		<dc:subject>S&#233;curit&#233;</dc:subject>
		<dc:subject>Qualit&#233;</dc:subject>

		<description>
&lt;p&gt;Le Web devient une plateforme de plus en plus compl&#232;te, et sa globalisation ou certains aspects de sa distribution (notamment via des CDNs) posent de nouvelles questions de s&#233;curit&#233;. Qu'&#224; cela ne tienne, de nouvelles sp&#233;cifications offrent de nouvelles r&#233;ponses &#224; ces questions. Celle qui va &#234;tre pr&#233;sent&#233;e dans cet article se nomme SubResource Integrity. &lt;br class='autobr' /&gt; Introduction &lt;br class='autobr' /&gt;
Utiliser un CDN pour distribuer des contenus est dans certains cas une tr&#232;s bonne pratique, cela permet : de mutualiser (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/debutant" rel="tag"&gt;D&#233;butant&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/securite" rel="tag"&gt;S&#233;curit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/qualite" rel="tag"&gt;Qualit&#233;&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Le Web devient une plateforme de plus en plus compl&#232;te, et sa globalisation ou certains aspects de sa distribution (notamment via des &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt;s) posent de nouvelles questions de s&#233;curit&#233;. Qu'&#224; cela ne tienne, de nouvelles sp&#233;cifications offrent de nouvelles r&#233;ponses &#224; ces questions. Celle qui va &#234;tre pr&#233;sent&#233;e dans cet article se nomme &lt;em lang=&#034;en&#034;&gt;SubResource Integrity&lt;/em&gt;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Utiliser un &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; pour distribuer des contenus est dans certains cas une tr&#232;s bonne pratique, cela permet :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; de mutualiser des ressources utilis&#233;es sur plusieurs sites ;&lt;/li&gt;&lt;li&gt; de permettre de les distribuer &#171; au plus pr&#232;s &#187; des visiteurs de vos sites ;&lt;/li&gt;&lt;li&gt; et &#233;galement d'&#233;conomiser de la bande passante pour tous les sites concern&#233;s.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Toutefois, cela comporte un risque. Si un attaquant prenait le contr&#244;le du &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; et en profitait pour ins&#233;rer du code malveillant dans certaines biblioth&#232;ques&#8230; instantan&#233;ment, des centaines voire des milliers de sites pourraient :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#234;tre soit eux-m&#234;mes attaqu&#233;s par ce code malveillant ;&lt;/li&gt;&lt;li&gt; ou contribuer malgr&#233; eux &#224; &#171; infecter &#187; leurs visiteurs.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Certaines biblioth&#232;ques ou &lt;i lang=&#034;en&#034;&gt;frameworks&lt;/i&gt; sont massivement utilis&#233;es sur les sites web&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir par exemple le d&#233;fa&#231;age du site de jQuery en 2014.&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;, ce risque est donc bien r&#233;el : la question de la confiance en un &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; externe est l&#233;gitime&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Imaginez simplement votre site mis sur de nombreuses listes noires et le (&#8230;)&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;Ce risque peut toutefois &#234;tre bien att&#233;nu&#233; gr&#226;ce &#224; une sp&#233;cification du &lt;abbr title=&#034;World Wide Web Consortium&#034; lang&gt;W3c&lt;/abbr&gt;.&lt;/p&gt;
&lt;h2&gt;&lt;i lang=&#034;en&#034;&gt;SubResource Integrity&lt;/i&gt;&lt;/h2&gt;
&lt;p&gt;C'est l&#224; qu'entre en jeu &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;, pour &lt;i lang=&#034;en&#034;&gt;SubResource Integrity&lt;/i&gt;, en bon fran&#231;ais le &#171; &lt;em&gt;contr&#244;le d'int&#233;grit&#233; des sous-ressources&lt;/em&gt; &#187;. L'id&#233;e &#8211; comme son nom l'indique &#8211; est de v&#233;rifier l'int&#233;grit&#233; de ressources, et ce, qu'elles soient sur un &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; ou ailleurs. L'objectif est de veiller &#224; ce qu'aucun tiers n'injecte de contenu ou n'effectue aucune modification sur les ressources en question.&lt;/p&gt;
&lt;p&gt;Historiquement, les discussions sur &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; ont commenc&#233; d&#233;but 2014, &lt;a href=&#034;https://www.w3.org/TR/2015/WD-SRI-20151006/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le premier brouillon public de travail&lt;/a&gt; est sorti le 6 octobre 2015, et &lt;a href=&#034;https://www.w3.org/TR/SRI/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la sp&#233;cification&lt;/a&gt; est devenue une recommandation officielle du &lt;abbr title=&#034;World Wide Web Consortium&#034; lang=&#034;en&#034;&gt;W3c&lt;/abbr&gt; le 23 juin 2016.&lt;/p&gt;
&lt;p&gt;Le concept de v&#233;rifier l'int&#233;grit&#233; de ressources n'est vraiment pas nouveau dans le milieu de l'informatique, les personnes habitu&#233;es des t&#233;l&#233;chargements des distributions Linux voient depuis tr&#232;s longtemps ce genre d'informations lors d'&lt;a href=&#034;http://doc.ubuntu-fr.org/tutoriel/comment_verifier_l_integrite_de_son_image_cd&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;un t&#233;l&#233;chargement d'une image &lt;abbr title=&#034;International Organization for Standardization&#034; lang=&#034;en&#034;&gt;ISO&lt;/abbr&gt;&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH94/sha256-ubuntu-d600412f-693ee.png?1763128934' alt=&#034;Int&#233;grit&#233; d'une image ISO de la distribution Ubuntu&#034; width='500' height='94' /&gt;&lt;/p&gt;
&lt;p&gt;Voyons donc comment mettre cela en &#339;uvre maintenant sur nos sites.&lt;/p&gt;
&lt;h3&gt;Mise en &#339;uvre de &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;Mettre en place &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; est tr&#232;s simple : il suffit d'indiquer un attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;integrity&lt;/code&gt; sur les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script&lt;/code&gt; et/ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;link&lt;/code&gt; &#8211; les seules support&#233;es pour le moment &#8211; qui contiendra la valeur de contr&#244;le d'int&#233;grit&#233; du fichier (via une &#171; fonction de hachage cryptographique &#187;, que nous appellerons un &lt;i lang=&#034;en&#034;&gt;hash&lt;/i&gt; pour simplifier).&lt;/p&gt;
&lt;p&gt;Cette valeur commence par au moins une cha&#238;ne (il peut y avoir plusieurs valeurs d'int&#233;grit&#233; sp&#233;cifi&#233;es, s&#233;par&#233;es par des espaces), chaque cha&#238;ne comprenant :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; un pr&#233;fixe indiquant l'algorithme utilis&#233; (actuellement, les pr&#233;fixes autoris&#233;s sont &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sha256&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sha384&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;sha512&lt;/code&gt;) ;&lt;/li&gt;&lt;li&gt; suivi d'un tiret&#8230;&lt;/li&gt;&lt;li&gt; &#8230;et se terminant par le &lt;i lang=&#034;en&#034;&gt;hash&lt;/i&gt; proprement dit (encod&#233; en base64).&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Par exemple, cela nous donnerait :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;integrity=&#034;sha384-yC7kyQdHbdC5s22r6nKzQXwcHKCLKBeg/XRG6mPMTyAUyT8f3htNhtQdFQnhBld5&#034;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;et cela s'int&#232;grerait donc ainsi :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;script src=&#034;un-script.js&#034; integrity=&#034;sha384-yC7kyQdHbdC5s22r6nKzQXwcHKCLKBeg/XRG6mPMTyAUyT8f3htNhtQdFQnhBld5&#034;&gt;&lt;/script&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cette valeur peut se calculer de plusieurs mani&#232;res. Soit &#224; la ligne de commande :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cat FILENAME.js | openssl dgst -sha384 -binary | openssl enc -base64 -A&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ou par exemple en &lt;abbr title=&#034;PHP Hypertext Preprocessor&#034; lang=&#034;en&#034;&gt;PHP&lt;/abbr&gt; en supposant que &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;$input&lt;/code&gt; soit le contenu du fichier :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo base64_encode(hash('sha384', $input, true));&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note : pour calculer l'int&#233;grit&#233; avec d'autres langages, &lt;a href=&#034;https://tenzer.dk/generating-subresource-integrity-checksums/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Generating Subresource Integrity Checksums&lt;/span&gt;&lt;/a&gt; liste quelques exemples. Des outils permettent &#233;galement de le calculer comme &lt;a href=&#034;https://srihash.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; hash&lt;/a&gt; ou de tester leur pr&#233;sence, comme &lt;a href=&#034;https://sritest.io/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; test&lt;/a&gt;, &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt; ou encore &lt;a href=&#034;https://www.hardenize.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Hardenize&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Note : si vous &#234;tes familier de &lt;a href='https://openweb.eu.org/articles/content-security-policy' class=&#034;spip_in&#034;&gt;&lt;i lang=&#034;en&#034;&gt;Content Security Policy&lt;/i&gt;&lt;/a&gt;, c'est sensiblement le m&#234;me principe pour les &lt;i lang=&#034;en&#034;&gt;hash&lt;/i&gt;.&lt;/p&gt;
&lt;h3&gt;Exemples simples en pratique&lt;/h3&gt;
&lt;p&gt;Voici deux exemples volontairement tr&#232;s simples :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;http://codepen.io/nico3333fr/pen/OXYWmm&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Un test correct de contr&#244;le d'int&#233;grit&#233; d'une feuille de style&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://codepen.io/nico3333fr/pen/QERdvQ&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;le m&#234;me test incorrect&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;En d&#233;tail, voila ce qu'il s'est pass&#233; :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le navigateur t&#233;l&#233;charge les ressources ;&lt;/li&gt;&lt;li&gt; il d&#233;tecte l'utilisation de &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; sur la feuille de style ;&lt;/li&gt;&lt;li&gt; il calcule donc l'int&#233;grit&#233; du fichier en question, et la compare aux valeurs propos&#233;es dans les deux exemples :&lt;/li&gt;&lt;li&gt; dans le premier cas, &lt;strong&gt;la valeur correspond, la feuille de styles est appliqu&#233;e&lt;/strong&gt;&#8230;&lt;/li&gt;&lt;li&gt; &#8230;et dans le second &lt;strong&gt;la valeur ne correspond pas, la feuille de style est purement et simplement ignor&#233;e&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Quelques exemples de biblioth&#232;ques proposant &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;&lt;/h3&gt;
&lt;p&gt;Si vous utilisez par exemple &lt;a href=&#034;http://getbootstrap.com/getting-started/#download&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Bootstrap&lt;/span&gt; via un &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt;&lt;/a&gt;, vous utilisez peut-&#234;tre &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; sans m&#234;me le savoir :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH296/sri-boutestrappe-3a2238c7-bbe67.png?1763128934' alt=&#034;Int&#233;gration de Bootstrap via un CDN, avec SRI&#034; width='500' height='296' /&gt;&lt;/p&gt;
&lt;p&gt;JQuery propose aussi &lt;a href=&#034;https://code.jquery.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; sur son &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt;&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH139/sri-jquery-b05261a0-de704.png?1763128934' alt=&#034;Int&#233;gration de jQuery via un CDN, avec SRI&#034; width='500' height='139' /&gt;&lt;/p&gt;
&lt;p&gt;Vous noterez sur ces exemples l'utilisation de l'attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;crossorigin=&#034;anonymous&#034;&lt;/code&gt;. Cet attribut permet d'indiquer que les requ&#234;tes &lt;abbr title=&#034;Cross-Origin Resource Sharing&#034; lang=&#034;en&#034;&gt;CORS&lt;/abbr&gt; pour cet &#233;l&#233;ment auront la balise de certificat vide&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Vous pouvez lire &#224; ce sujet Attributs de r&#233;glage du CORS.&#034; id=&#034;nh3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;. De son c&#244;t&#233;, le &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; pourra indiquer avec un en-t&#234;te &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Access-Control-Allow-Origin: *&lt;/code&gt; que la ressource peut &#234;tre acc&#233;d&#233;e de n'importe quel domaine de mani&#232;re crois&#233;e (&lt;i lang=&#034;en&#034;&gt;cross-site&lt;/i&gt;).&lt;/p&gt;
&lt;h2&gt;Support&lt;/h2&gt;
&lt;p&gt;Au moment de la mise &#224; jour de cet article (soit le 11 Janvier 2018), le &lt;a href=&#034;https://caniuse.com/#feat=subresource-integrity&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;support de &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; selon &#171; &lt;i lang=&#034;en&#034;&gt;Can I use&lt;/i&gt; &#187;&lt;/a&gt; est le suivant :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH188/support-sri-cani-28a09115-9381e.png?1763128934' alt=&#034;Support de SRI sur Can I Use&#034; width='500' height='188' /&gt;&lt;/p&gt;
&lt;p&gt;Chrome, Opera, Safari et Firefox le supportent pleinement, cela arrive dans la prochaine version d'Edge et certains Webkits sont en train de le prendre en consid&#233;ration (sous iOS cela peut &#234;tre activ&#233;, sans toutefois l'&#234;tre par d&#233;faut). Toujours selon &lt;i lang=&#034;en&#034;&gt;Can I use&lt;/i&gt;, &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; est donc support&#233; par environ 65% du parc des navigateurs, et son emploi ne g&#234;nera pas les navigateurs qui ne le supportent pas.&lt;/p&gt;
&lt;p&gt;Il n'y a donc &lt;strong&gt;aucun souci pour le d&#233;ployer massivement&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Avenir de &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;&lt;/h2&gt;
&lt;p&gt;Comme indiqu&#233; dans &lt;a href=&#034;https://www.w3.org/TR/SRI/#verification-of-html-document-subresources&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;la sp&#233;cification&lt;/a&gt; :&lt;/p&gt;
&lt;blockquote lang=&#034;en&#034;&gt;A future revision of this specification is likely to include integrity support for all possible subresources, i.e., &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;a&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;embed&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;iframe&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;img&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;link&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;object&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;source&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;track&lt;/code&gt;, and &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;video&lt;/code&gt; elements.&lt;/blockquote&gt;
&lt;p&gt;Traduit en fran&#231;ais, cela donne :&lt;/p&gt;
&lt;blockquote&gt;Une prochaine r&#233;vision de cette sp&#233;cification est susceptible d'inclure le support du contr&#244;le d'int&#233;grit&#233; pour toutes les sous-ressources possibles, c'est-&#224;-dire pour les &#233;l&#233;ments &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;a&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;audio&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;embed&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;iframe&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;img&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;link&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;object&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;source&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;track&lt;/code&gt;, et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;video&lt;/code&gt;.&lt;/blockquote&gt;
&lt;p&gt;Ajoutons &#224; cela que &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; va bient&#244;t proposer dans son niveau 3 de &lt;strong&gt;d&#233;finir explicitement votre politique de s&#233;curit&#233; concernant les ressources&lt;/strong&gt;, par exemple, il sera possible d'indiquer au navigateur :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Content-Security-Policy: require-sri-for script style; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Autrement dit, il sera possible de dire au navigateur de &lt;strong&gt;refuser l'ex&#233;cution de scripts ou de styles qui n'ont pas de contr&#244;le d'int&#233;grit&#233; des ressources&lt;/strong&gt; ! M&#234;me si l'id&#233;e de &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; est &#224; la base destin&#233;e aux contenus charg&#233;s via &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt;s, pourquoi ne pas &#233;tendre cette id&#233;e ? Une fois la page envoy&#233;e chez l'agent utilisateur, on ne contr&#244;le pas n&#233;cessairement ce qu'il peut s'y passer&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb4&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Lire &#224; ce sujet More proof we don't control our web pages.&#034; id=&#034;nh4&#034;&gt;4&lt;/a&gt;]&lt;/span&gt;, dans des cas avanc&#233;s de besoins de s&#233;curit&#233;, &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; et &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; pourraient &#234;tre utilis&#233;s conjointement pour garantir que ce qui va s'ex&#233;cuter chez l'agent utilisateur n'ait pas &#233;t&#233; modifi&#233;.&lt;/p&gt;
&lt;p&gt;Bien entendu, cela suppose que la page en question fonctionne en &lt;strong&gt;am&#233;lioration progressive&lt;/strong&gt; avec JavaScript d&#233;sactiv&#233;, et que le processus de &lt;i lang=&#034;en&#034;&gt;hash&lt;/i&gt; soit ex&#233;cut&#233; de mani&#232;re ind&#233;pendante de l'affichage de la page&#8230; &#224; bon entendeur !&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;i lang=&#034;en&#034;&gt;SubResource Integrity&lt;/i&gt; apporte une s&#233;curit&#233; non n&#233;gligeable, ce n'est pas un hasard si des outils comme &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt; ou &lt;a href=&#034;https://www.hardenize.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Hardenize&lt;/a&gt; recommandent son utilisation. Comme les navigateurs ne le supportant pas n'en auront cure, et que bon nombre de projets le proposent sur divers &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt;s, vous n'avez plus d'excuse pour ne pas l'adopter, l'utiliser et/ou m&#234;me le d&#233;ployer vous-m&#234;mes.&lt;/p&gt;
&lt;h2&gt;Ressources, compl&#233;ments&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://www.w3.org/TR/SRI/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; Specification&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/w3c/webappsec-subresource-integrity/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;, sp&#233;cification sur Github&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://developer.mozilla.org/fr/docs/Web/Security/Subresource_Integrity&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; sur le &lt;abbr title=&#034;Mozilla Developer Network&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;MDN&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.youtube.com/watch?v=PYBMnCq2kqs&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Video: Web Application Security with Subresource Integrity&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.youtube.com/watch?v=JOcpIF047xs&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;span lang=&#034;en&#034;&gt;Video: Frederik Braun &#8211; Using a &lt;abbr title=&#034;Content Delivery Network&#034; lang=&#034;en&#034;&gt;CDN&lt;/abbr&gt; that can not &lt;abbr title=&#034;Cross Site Scripting&#034; lang=&#034;en&#034;&gt;XSS&lt;/abbr&gt; you &#8211; with Subresource Integrity&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://sritest.io&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; Test&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://srihash.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt; hash&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/w3c/webappsec-subresource-integrity/wiki/Links&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Autres ressources sur &lt;abbr title=&#034;SubResource Integrity&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;SRI&lt;/abbr&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Voir par exemple &lt;a href=&#034;http://www.securityweek.com/jquery-confirms-website-hacked-again&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;le d&#233;fa&#231;age du site de jQuery en 2014&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Imaginez simplement votre site mis sur de nombreuses listes noires et le temps (et donc le co&#251;t) pour l'en d&#233;sinscrire&#8230;&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3&#034; class=&#034;spip_note&#034; title=&#034;Notes 3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;Vous pouvez lire &#224; ce sujet &lt;a href=&#034;https://developer.mozilla.org/fr/docs/Web/HTML/Reglages_des_attributs_CORS&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Attributs de r&#233;glage du &lt;abbr title=&#034;Cross-Origin Resource Sharing&#034; lang=&#034;en&#034;&gt;CORS&lt;/abbr&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb4&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh4&#034; class=&#034;spip_note&#034; title=&#034;Notes 4&#034; rev=&#034;appendix&#034;&gt;4&lt;/a&gt;] &lt;/span&gt;Lire &#224; ce sujet &lt;a href=&#034;https://www.aaron-gustafson.com/notebook/more-proof-we-dont-control-our-web-pages/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;&lt;i lang=&#034;en&#034;&gt;More proof we don't control our web pages&lt;/i&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Content Security Policy</title>
		<link>https://openweb.eu.org/articles/content-security-policy</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/content-security-policy</guid>
		<dc:date>2016-12-06T08:14:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Nicolas Hoffmann</dc:creator>


		<dc:subject>Expert</dc:subject>
		<dc:subject>Gourou</dc:subject>
		<dc:subject>S&#233;curit&#233;</dc:subject>

		<description>
&lt;p&gt;De nombreuses initiatives tendent &#224; amener plus de s&#233;curit&#233; sur les sites Internet. La g&#233;n&#233;ralisation de HTTPS avec des initiatives comme Let's Encrypt, la restriction de l'utilisation de certaines API avec HTTPS, de nombreux outils permettant de tester et d'am&#233;liorer la s&#233;curit&#233; des sites, etc. &lt;br class='autobr' /&gt;
Parmi ce vaste effort de s&#233;curisation des sites, une technologie offre de nouvelles possibilit&#233;s surprenantes sur le front-end. Son petit nom est &#171; Content Security Policy &#187;. &lt;br class='autobr' /&gt; Introduction (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/gourou" rel="tag"&gt;Gourou&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/securite" rel="tag"&gt;S&#233;curit&#233;&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;De nombreuses initiatives tendent &#224; amener plus de s&#233;curit&#233; sur les sites Internet. La g&#233;n&#233;ralisation de &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; avec des initiatives comme &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Let's Encrypt&lt;/em&gt;, la restriction de l'utilisation de certaines &lt;abbr title=&#034;Application Programming Interface&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;API&lt;/abbr&gt; avec &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;, de nombreux outils permettant de tester et d'am&#233;liorer la s&#233;curit&#233; des sites, etc.&lt;/p&gt;
&lt;p&gt;Parmi ce vaste effort de s&#233;curisation des sites, une technologie offre de nouvelles possibilit&#233;s surprenantes sur le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;. Son petit nom est &#171; &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Content Security Policy&lt;/em&gt; &#187;.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Actuellement, quand un navigateur re&#231;oit des contenus (images, &lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Cascading Style Sheet&#034;&gt;CSS&lt;/abbr&gt;, JavaScript, etc.), son travail est de rendre la page le plus vite et le mieux possible. Hormis quelques m&#233;canismes de s&#233;curit&#233; qui seront abord&#233;s ici-m&#234;me dans un futur proche, &#224; aucun moment, ce dernier ne se pose ce genre de questions :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; Est-ce que les concepteurs du site consid&#232;rent tel &#233;l&#233;ment comme l&#233;gitime ?&lt;/li&gt;&lt;li&gt; Dois-je bien ex&#233;cuter ou prendre en compte tel &#233;l&#233;ment ?&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ajoutons &#224; cela que le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; est souvent consid&#233;r&#233; comme un milieu extr&#234;mement hostile :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; il est de bon usage dans le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;back-end&lt;/em&gt; de &lt;strong&gt;ne jamais faire confiance&lt;/strong&gt; &#224; ce qui peut venir du &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; (formulaire, etc.) ;&lt;/li&gt;&lt;li&gt; l'agent utilisateur a toujours &lt;strong&gt;le dernier mot&lt;/strong&gt; vis-&#224;-vis d'un site qu'il consulte (styles utilisateurs, etc.), les concepteurs d'un site n'ont que peu de garanties de ce qu'il sera fait des pages qu'ils envoient ;&lt;/li&gt;&lt;li&gt; et une fois la page envoy&#233;e chez l'agent utilisateur, on ne contr&#244;le pas n&#233;cessairement ce qu'il peut s'y passer&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb1&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Lire &#224; ce sujet More proof we don't control our web pages.&#034; id=&#034;nh1&#034;&gt;1&lt;/a&gt;]&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Et pourtant, il existe bien des moyens de s&#233;curiser certains aspects du &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;, et notamment via une technologie nomm&#233;e &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;.&lt;/p&gt;
&lt;h2&gt;Des directives de s&#233;curit&#233; &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;&lt;/h2&gt;
&lt;p&gt;&lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; signifie &#171; &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Content Security Policy&lt;/em&gt; &#187;, en bon fran&#231;ais &#171; Politique de S&#233;curit&#233; des Contenus &#187;. L'id&#233;e est simple : en envoyant un en-t&#234;te &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt;, des directives de s&#233;curit&#233; sont donn&#233;es au navigateur, et ce dernier les appliquera &#224; la lettre. En clair, ces directives vont dire au navigateur ce qu'il est autoris&#233; &#224; ex&#233;cuter&#8230; ou non.&lt;/p&gt;
&lt;p&gt;Historiquement, &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; a &#233;t&#233; pens&#233; pour &lt;strong&gt;r&#233;duire la surface d'attaque&lt;/strong&gt; sur le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; vis-&#224;-vis des attaques dites de Cross-Site-Scripting (en anglais : &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;mitigate &lt;abbr title=&#034;Cross Site Scripting&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;XSS&lt;/abbr&gt;&lt;/em&gt;). En pratique, &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; permet d'aller beaucoup plus loin et offre de nombreux outils.&lt;/p&gt;
&lt;h2&gt;Fonctionnement et possibilit&#233;s&lt;/h2&gt;&lt;h3&gt;Principes&lt;/h3&gt;
&lt;p&gt;Le principe est tr&#232;s simple : un en-t&#234;te &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; est envoy&#233; au navigateur contenant des directives de s&#233;curit&#233; &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;. En voici un exemple via &lt;abbr title=&#034;PHP Hypertext Preprocessor&#034; xml:lang=&#034;en&#034; lang=&#034;en&#034;&gt;PHP&lt;/abbr&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;header(&#034;Content-Security-Policy: &lt;ici vos directives&gt;&#034;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Voici quelques exemples de directives :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;default-src 'self' ;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;default-src&lt;/code&gt; sera la directive appliqu&#233;e si aucune directive n'est d&#233;finie pour un &#233;l&#233;ment. Le mot-cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;'self'&lt;/code&gt; indique que tout ce qui sera sur le m&#234;me &lt;em&gt;port&lt;/em&gt;, m&#234;me protocole et m&#234;me nom de domaine sera autoris&#233;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;script-src 'self' www.piwik.com ;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dans cet exemple, la directive &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script-src&lt;/code&gt; indique donc &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;'self'&lt;/code&gt;, et &#233;galement que tous les fichiers JavaScript provenant de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;www.piwik.com&lt;/code&gt; seront autoris&#233;s &#224; s'ex&#233;cuter.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;img-src 'self' data: ;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cette directive &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;img-src&lt;/code&gt; indique &#233;galement &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;'self'&lt;/code&gt;, le mot-cl&#233; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;data:&lt;/code&gt; autorise quant &#224; lui les contenus dit embarqu&#233;s (via data-uri).&lt;/p&gt;
&lt;h3&gt;Liste des directives&lt;/h3&gt;
&lt;p&gt;&lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; niveau 1 permet de sp&#233;cifier des directives pour les &#233;l&#233;ments suivants :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script-src&lt;/code&gt; : les sources autoris&#233;es pour les scripts &lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;JavaScript&#034;&gt;JS&lt;/abbr&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;styles-src&lt;/code&gt; : les sources autoris&#233;es pour les styles &lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Cascading Style Sheet&#034;&gt;CSS&lt;/abbr&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;img-src&lt;/code&gt; : les sources autoris&#233;es pour les images&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;connect-src&lt;/code&gt; : s'applique pour XMLHttpRequest (&lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Asynchronous JAvascript and XML&#034;&gt;AJAX&lt;/abbr&gt;), WebSocket ou EventSource&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;font-src&lt;/code&gt; : les sources pour les &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;web fonts&lt;/em&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;object-src&lt;/code&gt; : les sources des plug-ins (par exemple : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;object&gt;&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;embed&gt;&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;applet&gt;&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;media-src&lt;/code&gt; : les sources pour les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;audio&gt;&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;video&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; etc.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;&lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; niveau 2 ajoute de nouvelles directives :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;child-src&lt;/code&gt; : les sources valides pour les &lt;em lang=&#034;en&#034;&gt;web workers&lt;/em&gt; et les &#233;l&#233;ments comme &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;frame&gt;&lt;/code&gt; et &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;iframe&gt;&lt;/code&gt; (remplace &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;frame-src&lt;/code&gt; d&#233;pr&#233;ci&#233; de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; niveau 1)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;base-uri&lt;/code&gt; : les sources valides pour l'&#233;l&#233;ment &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;base&lt;/code&gt; qui indique l'adresse &#224; utiliser pour recomposer toutes les adresses relatives contenues dans la page (&lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;base href=&#034;&#8230;&#034;&gt;&lt;/code&gt;)&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;form-action&lt;/code&gt; : les sources autoris&#233;es utilis&#233;es dans l'attribut &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;action&lt;/code&gt; d'un formulaire&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;frame-ancestors&lt;/code&gt; : les sources autoris&#233;es &#224; embarquer la ressource dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;frame&gt;&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;iframe&gt;&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;object&gt;&lt;/code&gt;, &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;embed&gt;&lt;/code&gt; ou &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;applet&gt;&lt;/code&gt;&lt;/li&gt;&lt;li&gt; &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;upgrade-insecure-requests&lt;/code&gt; : indique &#224; l'agent utilisateur de r&#233;&#233;crire l'&lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt; en changeant &lt;abbr title=&#034;HyperText Transfer Protocol&#034; lang=&#034;en&#034;&gt;HTTP&lt;/abbr&gt; en &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt; (pour les sites avec beaucoup d'anciennes &lt;abbr title=&#034;Uniform Resource Locator&#034; lang=&#034;en&#034;&gt;URL&lt;/abbr&gt;s qui ont besoin d'&#234;tre r&#233;&#233;crites).&lt;/li&gt;&lt;li&gt; etc.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Pour une meilleur r&#233;tro-compatibilit&#233; avec les directives d&#233;pr&#233;ci&#233;es, il suffit de copier le contenu d'une directive dans la version d&#233;pr&#233;ci&#233;e. Par exemple, il est possible de copier le contenu de &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;child-src&lt;/code&gt; et de le coller dans &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;frame-src&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;Exemple&lt;/h3&gt;
&lt;p&gt;Voici &lt;a href=&#034;https://rocssti.net/exemple-csp-codeurs-seine&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;un exemple&lt;/a&gt; pr&#233;sent&#233; lors de la conf&#233;rence &#171; Codeurs en Seine &#187; de cette ann&#233;e, cette page contient des &#233;l&#233;ments ind&#233;sirables. Sans &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;, voici le r&#233;sultat :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH288/sans-csp-c38c2e15-cf3fd.jpg?1763128934' alt=&#034;exemple de page sans CSP (page d&#233;fac&#233;e)&#034; width='500' height='288' /&gt;&lt;/p&gt;
&lt;p&gt;Pas terrible. Envoyons des directives &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; au navigateur, voici un r&#233;sum&#233; &lt;a href=&#034;https://openweb.eu.org/IMG/png/security-csp-exemple.png&#034;&gt;des directives compl&#232;tes&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;content-security-policy: default-src 'none' ; script-src 'self' www.google-analytics.com ; style-src 'self' ; img-src 'self' www.google-analytics.com data: ; font-src 'self'; frame-ancestors 'none' ;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Que va-t-il se passer ? Le navigateur les re&#231;oit et va les appliquer &#224; la lettre selon la r&#232;gle suivante : &lt;strong&gt;tout ce qui n'est express&#233;ment autoris&#233; dans les directives &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; sera interdit&lt;/strong&gt;. Par interdit, comprenez : bloqu&#233;, non ex&#233;cut&#233;, non affich&#233;.&lt;/p&gt;
&lt;p&gt;Point important : par d&#233;faut, le JavaScript en ligne n'est &lt;strong&gt;pas autoris&#233;&lt;/strong&gt;. Autrement dit, les balises &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script&lt;/code&gt;, attributs &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;onclick&lt;/code&gt;, etc. dans le HTML ne seront pas autoris&#233;s. Cela peut se faire avec &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script-src 'unsafe-inline'&lt;/code&gt; et via &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;script-src 'unsafe-eval'&lt;/code&gt;, toutefois, c'est d&#233;conseill&#233; (n'oublions pas que le but de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est de limiter les failles &lt;abbr title=&#034;Cross Site Scripting&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;XSS&lt;/abbr&gt;).&lt;/p&gt;
&lt;p&gt;Et il en va de m&#234;me pour la fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;eval&lt;/code&gt; de JavaScript, ainsi que pour les styles en ligne. Autrement dit, ces directives qui semblaient &#234;tre gentilles sont en fait plut&#244;t strictes et autorisent le minimum n&#233;cessaire.&lt;/p&gt;
&lt;p&gt;Le navigateur re&#231;oit donc des &#233;l&#233;ments, les fichiers JavaScript/&lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Cascading Style Sheet&#034;&gt;CSS&lt;/abbr&gt; sur le m&#234;me nom de domaine/port/protocole seront donc autoris&#233;s, et un script dont la provenance n'a pas &#233;t&#233; autoris&#233;e sera bloqu&#233;. Idem pour le JavaScript et les &lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Cascading Style Sheet&#034;&gt;CSS&lt;/abbr&gt; en ligne.&lt;/p&gt;
&lt;p&gt;Le navigateur va indiquer dans la console les &#233;l&#233;ments bloqu&#233;s et le pourquoi de ce blocage, exemple :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH226/notifs-csp-87e21980-38135.jpg?1763128934' alt=&#034;Notifications CSP dans la console du navigateur&#034; width='500' height='226' /&gt;&lt;/p&gt;
&lt;p&gt;Et voici le r&#233;sultat de la m&#234;me page prot&#233;g&#233;e par &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH309/avec-csp-452c1e9b-c3b52.jpg?1763128934' alt=&#034;exemple de la m&#234;me page avec CSP (page normale)&#034; width='500' height='309' /&gt;&lt;/p&gt;
&lt;p&gt;Mieux, n'est-ce pas ?&lt;/p&gt;
&lt;p&gt;Note : &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; ne &#171; d&#233;sinfectera &#187; pas vos pages, il &#233;vitera juste l'ex&#233;cution des contenus non autoris&#233;s.&lt;/p&gt;
&lt;h2&gt;D&#233;ployer &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;&lt;/h2&gt;
&lt;p&gt;Un premier conseil : &lt;strong&gt;ne foncez pas t&#234;te baiss&#233;e&lt;/strong&gt; pour d&#233;ployer &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; sur un site en production en vous disant que cela sera facile. C'est probablement la meilleure fa&#231;on si vous souhaitez&#8230; vous d&#233;go&#251;ter de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;. Ne faites pas ainsi sur un site en production, vous avez de grandes chances d'y laisser des plumes, vous &#234;tes pr&#233;venus !&lt;/p&gt;
&lt;p&gt;Comme vu pr&#233;c&#233;demment, vous &#234;tes entre des directives tr&#232;s pr&#233;cises et le navigateur, qui les appliquera de mani&#232;re stricte et disciplin&#233;e. Le point faible sera donc tr&#232;s souvent&#8230; &lt;strong&gt;vous&lt;/strong&gt; ! Il est tr&#232;s facile d'oublier une source de contenu, qu'un script a besoin de JavaScript en ligne pour fonctionner, etc. Et il n'est clairement pas dans la nature de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; d'&#234;tre indulgent.&lt;/p&gt;
&lt;p&gt;Selon votre situation, cela peut &#234;tre plus ou moins ais&#233;, n&#233;anmoins il convient de prendre des pr&#233;cautions. Heureusement, plusieurs outils de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; permettent de s'y pr&#233;parer sans risque.&lt;/p&gt;
&lt;h3 lang=&#034;en&#034;&gt;Report-URI&lt;/h3&gt;
&lt;p&gt;Les notifications envoy&#233;es dans la console du navigateur peuvent &#234;tre envoy&#233;es sur une adresse, et donc trait&#233;es. Cela s'indique dans les directives via :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;report-uri /csp-parser.php ;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sur cette adresse, le navigateur enverra les notifications au format &lt;abbr title=&#034;JavaScript Object Notation&#034; lang=&#034;en&#034;&gt;JSON&lt;/abbr&gt;. Voici un exemple volontairement minimaliste de script en &lt;abbr title=&#034;PHP Hypertext Preprocessor&#034; xml:lang=&#034;en&#034; lang=&#034;en&#034;&gt;PHP&lt;/abbr&gt; pouvant le traiter :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$data = file_get_contents('php://input');
if ($data = json_decode($data, true)) { $data = json_encode( $data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES ); mail(EMAIL, SUBJECT, $data);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En clair :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; le script re&#231;oit les donn&#233;es ;&lt;/li&gt;&lt;li&gt; il v&#233;rifie que le format est bien du &lt;abbr title=&#034;JavaScript Object Notation&#034; lang=&#034;en&#034;&gt;JSON&lt;/abbr&gt; ;&lt;/li&gt;&lt;li&gt; il aplatit les informations au format &lt;abbr title=&#034;JavaScript Object Notation&#034; lang=&#034;en&#034;&gt;JSON&lt;/abbr&gt; en texte&#8230;&lt;/li&gt;&lt;li&gt; &#8230;et envoie par mail ce texte.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Ce genre de script est parfait pour un d&#233;veloppement avec peu de fr&#233;quentation, o&#249; &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est pris en compte depuis le d&#233;but.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Important :&lt;/strong&gt; attention sur une production beaucoup plus visit&#233;e ! Pour prendre un exemple, si une page g&#233;n&#232;re 100 erreurs &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;, et que cette page est visit&#233;e 100 fois par jour, rien que cette page vous enverra 10 000 notifications par jour ! Pensez &#224; filtrer sur votre adresse de report&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb2&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir &#224; ce sujet quelques exemples de scripts pour report-uri.&#034; id=&#034;nh2&#034;&gt;2&lt;/a&gt;]&lt;/span&gt;, ou le cas &#233;ch&#233;ant &#224; utiliser un service d&#233;di&#233; &#224; cette t&#226;che, comme &lt;a href=&#034;https://report-uri.io/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Report-URI&lt;/a&gt;.&lt;/p&gt;
&lt;h3 lang=&#034;en&#034;&gt;Report-only&lt;/h3&gt;
&lt;p&gt;Comme vu pr&#233;c&#233;demment, un des soucis de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est son c&#244;t&#233; binaire : on l'active&#8230; ou non. Une possibilit&#233; vient r&#233;soudre ce probl&#232;me : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;Report-only&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Comme son nom l'indique, on va indiquer au navigateur de seulement rapporter les erreurs g&#233;n&#233;r&#233;es par les directives sp&#233;cifi&#233;es, &lt;strong&gt;sans bloquer quoi que ce soit&lt;/strong&gt; c&#244;t&#233; navigateur.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;header(&#034;Content-Security-Policy-Report-Only: &lt;vos directives&gt;&#034;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cela permet de &lt;strong&gt;tester des directives sans danger&lt;/strong&gt; : soit en cas de premier d&#233;ploiement de directives &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;, soit dans le cadre d'un renforcement de vos directives. Si par exemple des directives fonctionnent en production et que l'on souhaite les rendre plus strictes, on peut garder les directives et tester les directives plus dures sans risquer de bloquer quoi que ce soit.&lt;/p&gt;
&lt;p&gt;En r&#233;sum&#233;, avec &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Report-URI&lt;/em&gt; et &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Report-only&lt;/em&gt;, vous pouvez &lt;strong&gt;tester des directives sans danger&lt;/strong&gt;, et &lt;strong&gt;monitorer&lt;/strong&gt; tout ce qu'il se passe d'un point de vue &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;.&lt;/p&gt;
&lt;p&gt;Dans notre exemple donn&#233; plus haut, il est donc tout &#224; fait possible d'&#234;tre pr&#233;venu de suite que quelque chose d'anormal se passe sur la page.&lt;/p&gt;
&lt;h3&gt;&lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Hashes&lt;/em&gt; et &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Nonces&lt;/em&gt;&lt;/h3&gt;
&lt;p&gt;Souvent le probl&#232;me qui se pose vient des scripts en ligne : l'id&#233;al est de ne pas les autoriser, mais les al&#233;as d'un projet peuvent le n&#233;cessiter. C'est l&#224; qu'entrent en sc&#232;ne les &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;hashes&lt;/em&gt; et les &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;nonces&lt;/em&gt;. M&#234;me si ces deux possibilit&#233;s sont amen&#233;es par &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; niveau 2 (et donc pour le moment pas support&#233;es partout), en voici une pr&#233;sentation rapide.&lt;/p&gt;
&lt;h4&gt;&lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Hashes&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;Sans autoriser tous les scripts en ligne, il est possible d'en autoriser certains, via un contr&#244;le sur leur int&#233;grit&#233; (via une &#171; fonction de hachage cryptographique &#187;, que nous appellerons un &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;hash&lt;/em&gt; pour simplifier). En pratique, cela se pr&#233;cise dans les directives :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;script-src 'sha256-d08VMHuG2SHhy9Tk5IX7cA6bYafas7GiX/Fo9/hzDsY=' ;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ce calcul d'int&#233;grit&#233; correspond &#224; ce script : &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;&lt;script&gt;alert('bonjour le monde.');&lt;/script&gt;&lt;/code&gt;. Il s'obtient ainsi : (exemple en &lt;abbr title=&#034;PHP Hypertext Preprocessor&#034; xml:lang=&#034;en&#034; lang=&#034;en&#034;&gt;PHP&lt;/abbr&gt;)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;echo base64_encode(hash('sha256', &#034;alert('bonjour le monde.');&#034;, true));
// donne : d08VMHuG2SHhy9Tk5IX7cA6bYafas7GiX/Fo9/hzDsY= &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Attention :&lt;/strong&gt; le moindre espace change le r&#233;sultat du calcul !&lt;/p&gt;
&lt;h4&gt;&lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Nonces&lt;/em&gt;&lt;/h4&gt;
&lt;p&gt;&lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Nonce&lt;/em&gt; signifie : &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Number used Once&lt;/em&gt; (&#171; num&#233;ro utilis&#233; une seule fois &#187;). Encore une fois, cela se d&#233;finit dans les directives :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;script-src 'nonce-12345666789' ; &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Et cela s'utilisera ainsi :&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&lt;script nonce=&#034;12345666789&#034;&gt;&#8230;&lt;/script&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cela revient &#224; dire au navigateur de ne rien bloquer pour ce qui correspond &#224; ce &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;nonce&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Attention : comme son nom l'indique, un &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;nonce&lt;/em&gt; doit &#234;tre &lt;strong&gt;unique&lt;/strong&gt;, &lt;strong&gt;re-g&#233;n&#233;r&#233; &#224; chaque fois&lt;/strong&gt;, et bien entendu doit &#234;tre &lt;strong&gt;non trivial&lt;/strong&gt; et &lt;strong&gt;non devinable&lt;/strong&gt; !&lt;/p&gt;
&lt;h2&gt;Des sp&#233;cifications plut&#244;t bien stabilis&#233;es&lt;/h2&gt;
&lt;p&gt;Un point important &#224; mentionner : &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; n'est pas une technologie qui fonctionne uniquement sur certains navigateurs en version alpha avec 5 &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;flags&lt;/em&gt; &#224; activer. &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; niveau 1 et 2 sont des &lt;i lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Candidate Recommendations&lt;/i&gt; au &lt;abbr title=&#034;World Wide Web Consortium&#034; lang=&#034;en&#034;&gt;W3c&lt;/abbr&gt;, les travaux sur la standardisation de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; sont donc raisonnablement avanc&#233;s.&lt;/p&gt;
&lt;p&gt;C&#244;t&#233; support, &lt;a href=&#034;http://caniuse.com/#feat=contentsecuritypolicy&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;le support du niveau 1&lt;/a&gt; est excellent, comme le confirme le site &#171; &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;Can I Use&lt;/em&gt; &#187; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH262/caniuse-csp-dd40cf6d-c82f7.jpg?1763128934' alt=&#034;Support de CSP niveau 1 selon Can I Use&#034; width='500' height='262' /&gt;&lt;/p&gt;
&lt;p&gt;Le niveau 2 est plus r&#233;cent, au moment de la mise &#224; jour de cet article, &lt;a href=&#034;http://caniuse.com/#feat=contentsecuritypolicy2&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;le support en est plut&#244;t bon sur les navigateurs r&#233;cents&lt;/a&gt; :&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH228/caniuse-csp2-201-98e7c56f-c50c8.jpg?1763128934' alt=&#034;Support de CSP niveau 2 selon Can I Use&#034; width='500' height='228' /&gt;&lt;/p&gt;
&lt;p&gt;Quoi qu'il en soit, le niveau 1 est tout &#224; fait utilisable en production, le 2 aussi peut &#234;tre envisag&#233; pour des navigateurs r&#233;cents. Le seul d&#233;faut de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; consiste en de petits d&#233;fauts d'impl&#233;mentation chez les navigateurs : les soucis sont souvent des faux-positifs dans les notifications. On peut aussi noter que &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est parfois trop efficace : par exemple les &lt;em&gt;bookmarklets&lt;/em&gt; peuvent &#234;tre bloqu&#233;s par les directives &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; d'un site, alors qu'ils ne devraient pas l'&#234;tre. Les divers navigateurs travaillent activement &#224; r&#233;gler ces soucis.&lt;/p&gt;
&lt;h3&gt;Pourquoi utiliser &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; ?&lt;/h3&gt;
&lt;p&gt;Il ne vous aura pas &#233;chapp&#233; que de nombreuses initiatives incitent &#224; amener plus de s&#233;curit&#233; en standard sur les sites internet. &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; en est un maillon particuli&#232;rement int&#233;ressant, ce n'est pas un hasard si des outils comme &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt;, &lt;a href=&#034;https://www.dareboost.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Dareboost&lt;/a&gt;, &lt;a href=&#034;https://www.hardenize.com/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Hardenize&lt;/a&gt;, &lt;a href=&#034;https://securityheaders.io/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Security headers&lt;/a&gt;, etc. testent pr&#233;cis&#233;ment son utilisation et vous incitent &#224; le d&#233;ployer.&lt;/p&gt;
&lt;p&gt;La priorit&#233; : &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est l&#224; avant tout &lt;strong&gt;pour la s&#233;curit&#233; des utilisateurs&lt;/strong&gt;. &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; aide &#224; limiter les d&#233;g&#226;ts potentiels des failles de type &lt;abbr title=&#034;Cross Site Scripting&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;XSS&lt;/abbr&gt;, et m&#234;me plus largement sur les contenus que l'on peut qualifier d'ind&#233;sirables. Un point important : toute la m&#233;canique de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; qui a &#233;t&#233; d&#233;crite ici&#8230; est &lt;strong&gt;totalement transparente&lt;/strong&gt; pour l'utilisateur. Vous naviguez probablement quotidiennement sur des sites qui utilisent &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; (Twitter, Github, Facebook, etc.), et vous ne vous en &#234;tes probablement pas rendu compte avant de lire cette phrase.&lt;/p&gt;
&lt;p&gt;Ensuite, &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est &lt;strong&gt;un outil extr&#234;mement puissant pour les concepteurs/gestionnaires de sites&lt;/strong&gt;, c'est &#224; ce titre qu'on le qualifie souvent &#171; de couteau suisse du &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; &#187;&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb3&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Voir &#224; ce sujet l'excellente pr&#233;sentation de Scott Helme sur CSP.&#034; id=&#034;nh3&#034;&gt;3&lt;/a&gt;]&lt;/span&gt;. De par la nature de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;, pour faire fonctionner quelque chose sur votre &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;, vous &lt;strong&gt;devez&lt;/strong&gt; savoir ce dont cela a besoin comme sources de contenus et comment cela va fonctionner (styles/JavaScript en ligne, fonction &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;eval&lt;/code&gt;, etc.)&lt;span class=&#034;spip_note_ref&#034;&gt; [&lt;a href=&#034;#nb4&#034; class=&#034;spip_note&#034; rel=&#034;appendix&#034; title=&#034;Et cela va parfois vous surprendre lors de l'utilisation de scripts tiers&#8230;&#034; id=&#034;nh4&#034;&gt;4&lt;/a&gt;]&lt;/span&gt;.&lt;/p&gt;
&lt;p&gt;De facto, l'activation de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; vous invite &#224; respecter de bonnes pratiques :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &#233;viter les fonctions pos&#233;es &#224; la va-vite en &lt;em lang=&#034;en&#034;&gt;inline&lt;/em&gt;, qui seront d&#233;port&#233;es vers des fichiers externes ;&lt;/li&gt;&lt;li&gt; conna&#238;tre le fonctionnement intrins&#232;que d'un script ou d'un plugin ;&lt;/li&gt;&lt;li&gt; ma&#238;triser vos sources de contenus et pouvoir poser une politique stricte en la mati&#232;re ;&lt;/li&gt;&lt;li&gt; etc.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Si vous appr&#233;ciez le concept de l'orthogonalit&#233; abord&#233; dans &lt;a href='https://openweb.eu.org/articles/l-orthogonalite-en-css' class=&#034;spip_in&#034;&gt;L'orthogonalit&#233; en &lt;abbr lang=&#034;en&#034; xml:lang=&#034;en&#034; title=&#034;Cascading Style Sheet&#034;&gt;CSS&lt;/abbr&gt;&lt;/a&gt;, avec &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;, vous avez trouv&#233; le meilleur alli&#233; pour le respecter !&lt;/p&gt;
&lt;p&gt;Ce principe est d'ailleurs &#233;voqu&#233; en tant que bonne pratique Opquast : &lt;a href=&#034;http://checklists.opquast.com/webperf/criteria/les-scripts-manipulent-des-classes-plutot-que-les-styles-en-ligne&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les scripts manipulent des classes plut&#244;t que les styles en ligne&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;On peut m&#234;me parler d'&#233;co-conception : on ne s'autorise que le n&#233;cessaire, ce qui n'est pas un mal en soi. C'est extr&#234;mement bien illustr&#233; par exemple dans Firefox si vous faites &lt;kbd&gt;Maj&lt;/kbd&gt; + &lt;kbd&gt;F2&lt;/kbd&gt; et si vous tapez &lt;code class='spip_code spip_code_inline' dir='ltr'&gt;security CSP&lt;/code&gt;, on vous encourage &#224; r&#233;duire la surface d'attaque autant que possible sur vos directives : (exemple sur Twitter)&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/local/cache-vignettes/L500xH206/security-csp-twi-03aa2784-8f5e1.png?1763128934' alt=&#034;Affichage des directives CSP de Twitter sous Firefox&#034; width='500' height='206' /&gt;&lt;/p&gt;
&lt;p&gt;De plus, constatant que le poids moyen des pages ne fait qu'augmenter ces derni&#232;res ann&#233;es, s'appliquer un peu de frugalit&#233; ne fera de mal &#224; personne !&lt;/p&gt;
&lt;h2&gt;Le futur de &lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt;&lt;/h2&gt;
&lt;p&gt;En l'&#233;tat actuel des choses, le niveau 1 est tout &#224; fait utilisable en production. Le niveau 2 peut &#234;tre plus d&#233;licat &#224; d&#233;ployer, du fait du support moins large de ses possibilit&#233;s (seulement les navigateurs les plus r&#233;cents).&lt;/p&gt;
&lt;p&gt;Les travaux ont commenc&#233; sur le niveau 3, qui devrait amener de nouvelles directives. Toutefois, comme ce niveau est actuellement &#224; l'&#233;tat de brouillon de travail, il n'est pas n&#233;cessaire d'aller plus avant. Si le sujet vous int&#233;resse, vous pouvez consulter des ressources sur le sujet en bas de cet article.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;&lt;abbr title=&#034;Content Security Policy&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;CSP&lt;/abbr&gt; est un outil absolument fantastique pour le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; qui permet :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; de limiter les effets d'attaques &lt;abbr title=&#034;Cross Site Scripting&#034; lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;XSS&lt;/abbr&gt; et de contenus ind&#233;sirables ;&lt;/li&gt;&lt;li&gt; de servir de trousse &#224; outils pour des op&#233;rations importantes (migration &lt;abbr title=&#034;HyperText Transfer Protocol Secure&#034; lang=&#034;en&#034;&gt;HTTPS&lt;/abbr&gt;, etc.) ;&lt;/li&gt;&lt;li&gt; d'organiser une ma&#238;trise globale de votre &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt; tout en servant de garde-fou pour des bonnes pratiques ;&lt;/li&gt;&lt;li&gt; mais en plus de surveiller et de monitorer ce qu'il se passe sur le &lt;em lang=&#034;en&#034; xml:lang=&#034;en&#034;&gt;front-end&lt;/em&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Cette technologie a tout pour retenir votre attention, et vaut la peine d'&#234;tre essay&#233;e et d&#233;ploy&#233;e &#224; grande &#233;chelle.&lt;/p&gt;
&lt;h2&gt;Ressources, compl&#233;ments&lt;/h2&gt;&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://www.w3.org/TR/CSP/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP Level 1&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.w3.org/TR/CSP2/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP Level 2&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.w3.org/TR/CSP3/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP Level 3&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://cspvalidator.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP Validator&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://csp.withgoogle.com/docs/index.html&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP with Google&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.smashingmagazine.com/2016/09/content-security-policy-your-future-best-friend/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Content Security Policy, Your Future Best Friend&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.aaron-gustafson.com/notebook/more-proof-we-dont-control-our-web-pages/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;More proof we don't control our web pages&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://github.com/nico3333fr/CSP-useful&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;CSP useful, a collection of scripts, tips, thoughts about CSP&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://speakerdeck.com/mikispag/making-csp-great-again-michele-spagnuolo-and-lukas-weichselbaum&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Making CSP great again&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://www.paris-web.fr/2015/conferences/csp-content-security-policy.php&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Content Security Policy, Paris Web 2015&lt;/a&gt; ;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://observatory.mozilla.org/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;Mozilla Observatory&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		&lt;hr /&gt;
		&lt;div class='rss_notes'&gt;&lt;div id=&#034;nb1&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh1&#034; class=&#034;spip_note&#034; title=&#034;Notes 1&#034; rev=&#034;appendix&#034;&gt;1&lt;/a&gt;] &lt;/span&gt;Lire &#224; ce sujet &lt;a href=&#034;https://www.aaron-gustafson.com/notebook/more-proof-we-dont-control-our-web-pages/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;More proof we don't control our web pages&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb2&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh2&#034; class=&#034;spip_note&#034; title=&#034;Notes 2&#034; rev=&#034;appendix&#034;&gt;2&lt;/a&gt;] &lt;/span&gt;Voir &#224; ce sujet &lt;a href=&#034;https://github.com/nico3333fr/CSP-useful/tree/master/report-uri&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; title=&#034;en&#034; rel=&#034;external&#034;&gt;quelques exemples de scripts pour report-uri&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb3&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh3&#034; class=&#034;spip_note&#034; title=&#034;Notes 3&#034; rev=&#034;appendix&#034;&gt;3&lt;/a&gt;] &lt;/span&gt;Voir &#224; ce sujet l'&lt;a href=&#034;https://www.youtube.com/watch?v=d0D3d0ZM-rI&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;excellente pr&#233;sentation de Scott Helme sur CSP&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;&lt;div id=&#034;nb4&#034;&gt;
&lt;p&gt;&lt;span class=&#034;spip_note_ref&#034;&gt;[&lt;a href=&#034;#nh4&#034; class=&#034;spip_note&#034; title=&#034;Notes 4&#034; rev=&#034;appendix&#034;&gt;4&lt;/a&gt;] &lt;/span&gt;Et cela va parfois vous surprendre lors de l'utilisation de scripts tiers&#8230;&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>HTTPS : introduction</title>
		<link>https://openweb.eu.org/articles/https-introduction</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/https-introduction</guid>
		<dc:date>2016-11-14T10:29:50Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Fr&#233;d&#233;ric Kayser</dc:creator>


		<dc:subject>Expert</dc:subject>
		<dc:subject>Gourou</dc:subject>
		<dc:subject>S&#233;curit&#233;</dc:subject>

		<description>
&lt;p&gt;Disposer d'un web int&#233;gralement s&#233;curis&#233; par d&#233;faut, avec HTTPS utilis&#233; en lieu et place de HTTP, est le souhait de certains acteurs majeurs du net depuis quelques ann&#233;es. Cette nouvelle s&#233;rie d'articles traite diff&#233;rents aspects du fonctionnement de TLS (anciennement SSL) pour mieux comprendre les enjeux associ&#233;s et aborder sereinement la configuration de ce protocole. &lt;br class='autobr' /&gt; Cet article d'introduction explique le r&#244;le et le fonctionnement global de HTTPS, les articles sp&#233;cifiques se focalisent (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/gourou" rel="tag"&gt;Gourou&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/securite" rel="tag"&gt;S&#233;curit&#233;&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Disposer d'un web int&#233;gralement s&#233;curis&#233; par d&#233;faut, avec HTTPS utilis&#233; en lieu et place de HTTP, est le souhait de certains acteurs majeurs du net depuis quelques ann&#233;es. Cette nouvelle s&#233;rie d'articles traite diff&#233;rents aspects du fonctionnement de TLS (anciennement SSL) pour mieux comprendre les enjeux associ&#233;s et aborder sereinement la configuration de ce protocole.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Cet article d'introduction explique le r&#244;le et le fonctionnement global de HTTPS, les articles sp&#233;cifiques se focalisent plus en profondeur sur un point pr&#233;cis.&lt;/p&gt;
&lt;ol class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href='https://openweb.eu.org/articles/https-de-ssl-a-tls-1-3' class=&#034;spip_in&#034;&gt;De SSL &#224; TLS 1.3&lt;/a&gt;&lt;/li&gt;&lt;li&gt; Le certificat PKIX (parution &#224; venir)&lt;/li&gt;&lt;li&gt; Les suites cryptographiques (parution &#224; venir)&lt;/li&gt;&lt;li&gt; &#192; double tour (parution &#224; venir)&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;En raison de la diversit&#233; des h&#233;bergeurs, serveurs, autorit&#233;s de certification et besoins de compatibilit&#233; avec des clients web plus ou moins anciens, ces articles ne sont toutefois que des guides et non des tutoriels pour configurer un logiciel particulier.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Bien au-del&#224; du cadenas&lt;/h2&gt;
&lt;p&gt;Pour le grand public HTTPS est souvent associ&#233; &#224; la pr&#233;sence rassurante du petit cadenas verrouill&#233; &#224; proximit&#233; de la barre d'URL et malheureusement &#233;galement &#224; quelques clics rapides sur des boutons OK lorsqu'une alerte relative &#224; un probl&#232;me de certificat surgit.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/jpg/howsmyssl-2.jpg' alt=&#034;URL s&#233;curis&#233;e par HTTPS&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Le S qui signifie s&#233;curis&#233; dans HTTPS provient de TLS &#8212;Transport Layer Security&#8212; qui est un protocole suppl&#233;mentaire et ind&#233;pendant qui se positionne entre TCP et HTTP qui demeurent pratiquement inchang&#233;s.&lt;br class='autobr' /&gt;
La s&#233;curisation de la connexion r&#233;pond &#224; trois besoins principaux : authentifier le serveur, garantir la confidentialit&#233; et l'int&#233;grit&#233; des donn&#233;es &#233;chang&#233;es.&lt;br class='autobr' /&gt;
Cela ne concerne donc que les donn&#233;es en transit et n'am&#233;liore que marginalement la s&#233;curisation du serveur lui-m&#234;me, mais rendre bien plus difficile la r&#233;cup&#233;ration de cookies ou d'identifiants de connexion peut &#233;viter quelques mauvaises surprises.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-layers.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;L'annonce de Google de signaler, d&#232;s le d&#233;but 2017, comme &lt;a href=&#034;https://security.googleblog.com/2016/09/moving-towards-more-secure-web.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;non s&#233;curis&#233;e&lt;/a&gt; toute page web qui propose un formulaire de saisie de mot de passe ou de carte bancaire hors HTTPS devrait encore acc&#233;l&#233;rer le mouvement de migration de HTTP vers HTTPS, de nombreux sites ayant d&#233;j&#224; fait le saut suite aux r&#233;v&#233;lations d'Edward Snowden en 2013.&lt;br class='autobr' /&gt;
Par ailleurs HTTP/2 (ou h2), la nouvelle version de HTTP, n&#233;cessite en pratique la pr&#233;sence de TLS. Pour mettre en place HTTP/2 et b&#233;n&#233;ficier de ses acc&#233;l&#233;rations une &#233;tape pr&#233;liminaire est donc de passer int&#233;gralement en HTTPS.&lt;br class='autobr' /&gt;
Il y a toujours plus de raisons techniques d'utiliser HTTPS, comme acc&#233;der &#224; l'&lt;a href=&#034;https://developers.google.com/web/updates/2016/04/geolocation-on-secure-contexts-only&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;API de g&#233;olocalisation&lt;/a&gt; avec les navigateurs modernes, mais la premi&#232;re raison devrait &#234;tre le respect de l'utilisateur et de ses donn&#233;es.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;Premier contact&lt;/h2&gt;
&lt;p&gt;Voici comment se d&#233;roule typiquement l'&#233;tablissement d'une connexion HTTPS lors d'une premi&#232;re visite d'un site.&lt;br class='autobr' /&gt;
Le client a tout d'abord besoin de d&#233;terminer l'adresse IP associ&#233;e au nom de domaine du site web, si cette information n'est pas disponible dans une m&#233;moire cache locale (suite &#224; une requ&#234;te ant&#233;rieure) une demande de r&#233;solution est &#233;mise vers un serveur DNS.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/gif/tls-intro-dns.gif' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Malheureusement les donn&#233;es locales du client pourraient avoir &#233;t&#233; alt&#233;r&#233;es, le r&#233;solveur DNS pourrait avoir &#233;t&#233; &lt;a href=&#034;https://fr.wikipedia.org/wiki/Empoisonnement_du_cache_DNS&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;empoisonn&#233;&lt;/a&gt; par des informations erron&#233;es ou tout simplement &lt;a href=&#034;http://www.bortzmeyer.org/censure-francaise.html&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;mentir&lt;/a&gt; et, pour finir, un &#233;l&#233;ment actif du r&#233;seau pourrait intercepter la demande et retourner une r&#233;ponse falsifi&#233;e&#8230; Cela tromperait le client et l'orienterait en direction d'un serveur probablement malveillant, d'o&#249; la n&#233;cessit&#233; pour un serveur HTTPS l&#233;gitime de pouvoir s'authentifier en prouvant qu'il a &#233;t&#233; pr&#233;alablement reconnu par un tiers de confiance comme &#233;tant bien celui attendu.&lt;/p&gt;
&lt;p&gt;Une fois en possession de l'IP du serveur le client peut le contacter avec le protocole HTTP sur le port 80. Dans le cas pr&#233;sent le client demande simplement l'&#233;l&#233;ment du site situ&#233; &#224; sa racine, celle-ci est symbolis&#233;e par un simple caract&#232;re /.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/gif/tls-intro-http.gif' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Le serveur ne renvoie pas au client les donn&#233;es qu'il attendait mais lui indique avec une redirection HTTP 301 que ce qu'il cherche est d&#233;sormais disponible &#224; un autre emplacement accessible en HTTPS (techniquement parlant le protocole fait partie de l'URL, la redirection correspond donc &#224; &lt;a href=&#034;https://support.google.com/webmasters/answer/6033049?hl=fr&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;un d&#233;placement de site&lt;/a&gt;). Le site HTTP ne sert donc plus qu'&#224; rediriger automatiquement ses visiteurs vers la version HTTPS. Ceci constitue &#233;galement une bonne pratique SEO pour &#233;viter que les moteurs de recherche ne d&#233;tectent du contenu dupliqu&#233; et donc d&#233;valoris&#233;.&lt;/p&gt;
&lt;div class=&#034;remarque_important&#034;&gt;Il existe toutefois deux cas qui pousseraient le client &#224; communiquer directement en HTTPS lors d'une premi&#232;re visite :&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; l'URL pr&#233;cise explicitement le protocole s&#233;curis&#233; et commence donc par https://&lt;/li&gt;&lt;li&gt; le domaine est inscrit sur la liste de pr&#233;chargement HSTS
&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Le client d&#233;laisse temporairement le protocole HTTP car il a en premier lieu besoin d'&#233;tablir la connexion s&#233;curis&#233;e. Pour ce faire il s'adresse au port 443, qui est commun&#233;ment d&#233;di&#233; &#224; TLS, il &#233;num&#232;re alors tout un inventaire de ses capacit&#233;s relatives &#224; ce protocole (algorithmes de signature accept&#233;s, courbes elliptiques connues, suites cryptographiques pr&#233;f&#233;r&#233;es&#8230;).&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/gif/tls-intro-tls.gif' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;En fonction des desiderata du client le serveur va retourner un certificat contenant une cl&#233; publique qui permettront de l'authentifier, il indique &#233;galement quelle suite cryptographique il a retenu pour chiffrer les donn&#233;es. Celle-ci va d&#233;terminer le m&#233;canisme d'&#233;change de la cl&#233; de chiffrement, ainsi que l'algorithme de chiffrement sym&#233;trique et la m&#233;thode de v&#233;rification d'int&#233;grit&#233; qui seront mis en &#339;uvre par la suite.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-ocsp.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Une fois le client en possession du certificat il va s'assurer de sa conformit&#233; en v&#233;rifiant plusieurs points dont les principaux sont :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; la pr&#233;sence du nom du domaine visit&#233; parmi ceux pr&#233;sents sur le certificat&lt;/li&gt;&lt;li&gt; la p&#233;riode de validit&#233;&lt;/li&gt;&lt;li&gt; la signature appos&#233;e par l'AC &#8212;Autorit&#233; de Certification&#8212; qui a &#233;mis le certificat&lt;/li&gt;&lt;li&gt; la possibilit&#233; de remonter la cha&#238;ne de confiance d'AC en AC jusqu'&#224; une AC racine reconnue&lt;/li&gt;&lt;li&gt; l'absence de publication sur des listes de r&#233;vocation de type CRL et/ou OCSP.&lt;/li&gt;&lt;/ul&gt;&lt;p class=&#034;remarque_important&#034;&gt;Les raisons pour d&#233;clencher une alerte de s&#233;curit&#233; relative au certificat sont donc nombreuses et parfois obscures. Le grand public ayant tendance &#224; vouloir passer outre, les navigateurs ont commenc&#233; &#224; modifier la pr&#233;sentation des alertes pour rendre l'acc&#232;s au contournement moins facile, de plus certains en-t&#234;tes HTTP peuvent d&#233;sormais inhiber cette possibilit&#233;.&lt;/p&gt;
&lt;p&gt;
Une fois l'&#233;change (ou construction) de la cl&#233; de chiffrement sym&#233;trique r&#233;alis&#233;, un canal de communication chiffr&#233; est &#233;tabli, le client et le serveur ne communiqueront d&#233;sormais plus qu'&#224; travers celui-ci, rendant de ce fait leurs &#233;changes inintelligibles au reste du monde.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/gif/tls-intro-ok.gif' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Le client transmet alors une nouvelle requ&#234;te HTTP GET mais en passant cette fois par le canal chiffr&#233;, le serveur lui r&#233;pond d&#233;sormais pleinement par cette m&#234;me voie, couramment le serveur pr&#233;cise via un en-t&#234;te HTTP STS &#8212;Strict Transport Security&#8212; qu'il exige d'&#234;tre contact&#233; en HTTPS &#224; l'avenir.&lt;/p&gt;
&lt;p&gt;Il est parfaitement possible de capturer et d&#233;cortiquer ces premiers &#233;changes avec un analyseur de paquets r&#233;seau comme &lt;a href=&#034;https://www.wireshark.org/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Wireshark&lt;/a&gt;, une fois la connexion chiffr&#233;e le r&#233;sultat est bien s&#251;r un peu plus opaque&#8230;&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-wireshark.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;En l'absence de connexion s&#233;curis&#233;e le contenu des &#233;changes peut &#234;tre consult&#233; et m&#234;me modifi&#233; en tout point du r&#233;seau, cependant les points d'acc&#232;s WiFi gratuits sont particuli&#232;rement sensibles, car n'importe qui peut en monter un et il est tr&#232;s facile de les &#233;couter.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-bb.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;La NSA &#8212;National Security Agency&#8212; (et tr&#232;s probablement d'autres agences gouvernementales tout autour de la plan&#232;te) collecte massivement et sans distinction toutes sortes de donn&#233;es sur le net. Certains des documents divulgu&#233;s par Edward Snowden ont &#233;t&#233; mis en relation avec des recherches universitaires qui laissent peu de doutes quant aux capacit&#233;s dont dispose la NSA pour &lt;a href=&#034;https://freedom-to-tinker.com/2015/10/14/how-is-nsa-breaking-so-much-crypto/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;casser le chiffrement&lt;/a&gt; d'une partie du trafic Internet mal prot&#233;g&#233;, en particulier en raison de l'utilisation de cl&#233;s asym&#233;triques trop petites ou bas&#233;es sur des primitives trop communes. Il est donc devenu crucial de veiller sur ces points car ce qui aujourd'hui encore n'est qu'&#224; la port&#233;e d'agences gouvernementales pourrait devenir le business quotidien d'organisations criminelles d'ici quelques ann&#233;es.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;2016 ann&#233;e de transition&lt;/h2&gt;
&lt;p&gt;Ext&#233;rieurement on pourrait croire que rien n'a chang&#233; en 20 ans, en fait c'est en partie vrai, avec des certificats r&#233;guli&#232;rement renouvel&#233;s un serveur correctement configur&#233; &#224; la fin des ann&#233;es 90 aurait pu fonctionner sans probl&#232;me visible jusqu'en novembre 2014&#8230; c'est-&#224;-dire jusqu'au moment o&#249; les navigateurs ont commenc&#233; &#224; d&#233;sactiver SSLv3 en leur sein pour contrer l'attaque POODLE. En pratique depuis 2011 et plus encore suite aux r&#233;v&#233;lations d'Edward Snowden en 2013 le petit monde de la crypto sur le web est en &#233;bullition et tente de rattraper des ann&#233;es de retard et d'immobilisme.&lt;/p&gt;
&lt;p&gt;2016 est clairement une ann&#233;e charni&#232;re, Let's Encrypt a distribu&#233; de mani&#232;re automatis&#233;e plus de 10 millions de &#171; certificats SSL &#187; gratuits depuis son lancement fin 2015, ce qui contribue tr&#232;s concr&#232;tement &#224; l'adoption g&#233;n&#233;ralis&#233;e de HTTPS. Cela permet &#224; un nombre croissant d'h&#233;bergeurs de proposer HTTPS au m&#234;me co&#251;t qu'un h&#233;bergement classique et sans n&#233;cessairement avoir besoin d'une IP en propre pour chaque domaine gr&#226;ce au support de l'extension TLS nomm&#233;e SNI &#8212;Server Name Indication&#8212; qui est &lt;a href=&#034;http://caniuse.com/#feat=sni&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;tr&#232;s largement r&#233;pandue&lt;/a&gt;, ce qui tombe &#224; pic avec la p&#233;nurie d'IPv4 qui est devenue une r&#233;alit&#233;.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/le-10millions.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Depuis le 1er janvier 2016 les autorit&#233;s de certifications n'ont plus le droit d'&#233;mettre de certificats dont la signature repose sur un condensat SHA-1, SHA-256 s'est donc largement g&#233;n&#233;ralis&#233; et les navigateurs vont commencer &#224; &lt;a href=&#034;https://blog.mozilla.org/security/2016/10/18/phasing-out-sha-1-on-the-public-web/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;rejeter les vieux certificats&lt;/a&gt; encore en SHA-1 d&#233;but 2017.&lt;/p&gt;
&lt;p&gt;Depuis le d&#233;but de l'ann&#233;e la m&#233;thode de chiffrement RC4 (le fleuron des ann&#233;es 90) est progressivement retir&#233;e des navigateurs modernes et &#224; la place Chrome, Firefox et Opera acceptent d&#233;sormais ChaCha20 ; de son c&#244;t&#233; le chiffrement AES est couramment acc&#233;l&#233;r&#233; mat&#233;riellement y compris sur les processeurs d'entr&#233;e de gamme chez Intel et AMD.&lt;/p&gt;
&lt;p&gt;HTTP/2 qui impose de nombreuses restrictions quant &#224; la configuration TLS sous-jacente est d&#233;sormais activable avec Apache 2.4.17, Nginx 1.10.0 et IIS 10 sur Windows Server 2016.&lt;/p&gt;
&lt;p&gt;Les sp&#233;cifications finales de TLS 1.3 devraient &#234;tre publi&#233;es d'ici quelques mois, mais il faudra de toute fa&#231;ons de longues ann&#233;es avant que cette version ne devienne pr&#233;dominante (pour autant une importante part du trafic web mondial devrait en b&#233;n&#233;ficier tr&#232;s rapidement du fait de son adoption quasiment acquise sur les serveurs de Google et Cloudflare d'une part et dans Chrome et Firefox de l'autre). Mais on peut d'ores et d&#233;j&#224; s'inspirer de TLS 1.3 pour mieux configurer TLS 1.2.&lt;/p&gt;
&lt;p&gt;De plus la large diffusion d'OpenSSL 1.0.2 au sein des derni&#232;res distributions GNU/Linux et l'ancrage de LibreSSL &#224; sa place dans certains syst&#232;mes *BSD devraient &#233;galement faciliter l'obtention de configurations TLS correctes, sans parler d'OpenSSL 1.1.0 qui vient de faire ses premiers pas avec quelques nouveaut&#233;s tr&#232;s int&#233;ressantes.&lt;/p&gt;
&lt;h2 class=&#034;spip&#034;&gt;HTTPS partout, s&#233;curit&#233; NULL(part)&lt;/h2&gt;
&lt;p&gt;HTTPS partout c'est bien, mais avec un S de qualit&#233; c'est encore mieux. Les navigateurs affichent toujours le m&#234;me cadenas (parfois affubl&#233; d'un petit compl&#233;ment pour signaler un soucis comme du contenu mixte) mais il faut bien comprendre que les diff&#233;rents m&#233;canismes en &#339;uvre pour &#233;tablir la liaison s&#233;curis&#233;e vont produire une connexion plus ou moins robuste en fonction des capacit&#233;s respectives du client et du serveur. Il est possible d'avoir une estimation de cette robustesse avec des extensions comme &lt;a href=&#034;https://addons.mozilla.org/en-us/firefox/addon/calomel-ssl-validation/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Calomel SSL Validation&lt;/a&gt; ou &lt;a href=&#034;https://addons.mozilla.org/en-US/firefox/addon/ssleuth/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SSleuth&lt;/a&gt; pour Firefox, le premier est quelque peu plus simple d'acc&#232;s avec un simple code couleur visible dans un premier temps et des indications plus d&#233;taill&#233;es disponibles au besoin, je vous conseille de l'installer car il permet d'acc&#233;der rapidement &#224; des informations pr&#233;cieuses pendant la phase de configuration et plus g&#233;n&#233;ralement au quotidien voir du jaune ou du rouge &#224; son niveau devrait vous alerter.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/jpg/tls-intro-calomel.jpg' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Sur cette page du site de test &lt;a href=&#034;https://badssl.com/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;badssl.com&lt;/a&gt; on voit que le blason est bleu alors que c'est la couleur verte qui est associ&#233;e aux meilleures notes, ici la note globale n'est que de 89%.&lt;/p&gt;
&lt;p&gt;Les navigateurs peuvent &#233;ventuellement indiquer les param&#232;tres TLS en cours d'utilisations mais ces informations ne sont pas toujours accessibles facilement et souvent incompl&#232;tes.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-chrome.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Google Chrome donne les informations les plus d&#233;taill&#233;es et qualifie individuellement le protocole, l'&#233;change de cl&#233; ainsi que la m&#233;thode de chiffrement soit de robuste soit d'obsol&#232;te. Sur la m&#234;me page de test on voit que Chrome consid&#232;re le chiffrement AES 256 bits en mode CBC avec un HMAC SHA-1 comme &#233;tant obsol&#232;te&#8230; Il y a de quoi froncer un sourcil car AES 256 bits est consid&#233;r&#233; comme &#233;tant ce qui se fait de mieux en mati&#232;re de chiffrement, mais comme souvent en s&#233;curit&#233; le diable est dans les d&#233;tails et pour Chrome ce sont le mode CBC et le HMAC SHA-1 qui posent probl&#232;me. Pour autant le cadenas est tout ce qu'il y a de plus normal et en apparence tout va bien, mais il n'est pas inenvisageable que d'ici 3 ou 4 ans certains navigateurs refusent de se connecter sur un site configur&#233; de la sorte car techniquement on peut d'ores et d&#233;j&#224; faire mieux et &#224; l'avenir l'usage du mode CBC pourrait &#234;tre d&#233;courag&#233;.&lt;br class='autobr' /&gt;
Les phrases pr&#233;c&#233;dentes contiennent quelques acronymes qui ne sont pas d&#233;taill&#233;s dans cette introduction. Il y a beaucoup d'acronymes en cryptographie, ce qui ne facilite pas vraiment la compr&#233;hension du sujet lorsqu'on l'aborde en n&#233;ophyte. Il y a une vingtaine d'ann&#233;es Netscape 4 proposait &#224; ses utilisateurs d'activer ou non certaines suites cryptographiques (y compris une sans chiffrement, &#233;galement connue sous le nom de chiffrement NULL), le grand public &#233;tait alors directement expos&#233; &#224; de tels acronymes.&lt;/p&gt;
&lt;p&gt;&lt;img src='https://openweb.eu.org/IMG/png/tls-intro-netscape4sslv3.png' alt=&#034;&#034; style='max-width: 500px;max-width: min(100%,500px); max-height: 10000px' /&gt;&lt;/p&gt;
&lt;p&gt;Aujourd'hui Safari ne restitue strictement aucune information concernant le protocole ou la suite cryptographique en service, on voit le cadenas et on peut consulter le certificat c'est tout. Toute la &#171; culture &#187; cryptographique est occult&#233;e, a posteriori on sait que la majorit&#233; des utilisateurs de Netscape et leurs descendants n'ont retenu que deux vagues notions : SSL &#231;a crypte (sic) et plus il y a de bits mieux c'est crypt&#233; (sic), traumatisme tr&#232;s certainement li&#233; &#224; la premi&#232;re &#171; crypto war &#187; et ses restrictions &#224; l'export hors US.&lt;br class='autobr' /&gt;
Les articles sp&#233;cifiques font le tour d'une bonne partie des concepts et des acronymes li&#233;s &#224; cette culture cryptographique bien au-del&#224; du cadenas donc, leur parution devrait avoir lieu progressivement dans les prochains mois. En attendant si vous souhaitez commencer &#224; creuser le sujet et d&#233;cortiquer la configuration SSL/TLS d'un site d&#233;j&#224; existant l'incontournable &lt;a href=&#034;https://www.ssllabs.com/ssltest/analyze.html?viaform=on&amp;d=cbc.badssl.com&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;SSL Labs&lt;/a&gt; devrait se r&#233;v&#233;ler tr&#232;s pr&#233;cieux.&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Comment le Web est devenu illisible&#8230;</title>
		<link>https://openweb.eu.org/ailleurs/comment-le-web-est-devenu-illisible</link>
		<guid isPermaLink="true">https://openweb.eu.org/ailleurs/comment-le-web-est-devenu-illisible</guid>
		<dc:date>2016-10-24T13:35:55Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Gilles Chagnon</dc:creator>


		<dc:subject>Accessibilit&#233;</dc:subject>

		<description>
&lt;p&gt;Il y a de cela quelques ann&#233;es, nous avions publi&#233; un article sur les contrastes de texte. &lt;br class='autobr' /&gt;
Malheureusement, force est de constater que le temps ne fait rien &#224; l'affaire. Kevin Marks le d&#233;plore dans son billet intitul&#233; How the Web Became Unreadable. Selon lui, les derni&#232;res modes en design poussent &#224; l'adoption de contrastes de plus en plus faibles. Si cela ne pose pas (trop) de probl&#232;me sur les excellents &#233;crans high-tech que les designers, n'ayant par ailleurs pas besoin de lunettes, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/ailleurs/" rel="directory"&gt;Voir ailleurs&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/accessibilite" rel="tag"&gt;Accessibilit&#233;&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Il y a de cela quelques ann&#233;es, nous avions publi&#233; un article sur les &lt;a href='https://openweb.eu.org/articles/accessibilite_contrastes_textes_sites' class=&#034;spip_in&#034;&gt;contrastes de texte&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Malheureusement, force est de constater que le temps ne fait rien &#224; l'affaire. Kevin Marks le d&#233;plore dans son billet intitul&#233; &lt;a href=&#034;https://backchannel.com/how-the-web-became-unreadable-a781ddc711b6&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; rel=&#034;external&#034;&gt;How the Web Became Unreadable&lt;/a&gt;. Selon lui, les derni&#232;res modes en design poussent &#224; l'adoption de contrastes de plus en plus faibles. Si cela ne pose pas (trop) de probl&#232;me sur les excellents &#233;crans high-tech que les designers, n'ayant par ailleurs pas besoin de lunettes, utilisent pour concevoir leurs interfaces, il n'en est pas de m&#234;me dans le monde r&#233;el, o&#249; les conditions de consultation et les situations de chacun varient &#233;norm&#233;ment.&lt;/p&gt;
&lt;blockquote lang=&#034;en&#034;&gt;When you build a site and ignore what happens afterwards&#8202;&#8212;&#8202;when the values entered in code are translated into brightness and contrast depending on the settings of a physical screen&#8202;&#8212;&#8202;you're avoiding the experience that you create. And when you design in perfect settings, with big, contrast-rich monitors, you blind yourself to users. To arbitrarily throw away contrast based on a fashion that &#8220;looks good on my perfect screen in my perfectly lit office&#8221; is abdicating designers' responsibilities to the very people for whom they are designing. &lt;/blockquote&gt;
&lt;p&gt;En guise de compl&#233;ment, et en plus de ceux que nous avons indiqu&#233;s dans notre &lt;a href='https://openweb.eu.org/articles/accessibilite_contrastes_textes_sites' class=&#034;spip_in&#034;&gt;billet de 2012 mentionn&#233; plus haut&lt;/a&gt;, voici quelques outils :&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;span lang=&#034;en&#034;&gt;&lt;a href=&#034;https://khan.github.io/tota11y/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; rel=&#034;external&#034;&gt;tota11y, an accessibility visualization toolkit&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://squizlabs.github.io/HTML_CodeSniffer/&#034; class=&#034;spip_out&#034; hreflang=&#034;en&#034; rel=&#034;external&#034;&gt;HTML Code Sniffer&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Paris Web 2016</title>
		<link>https://openweb.eu.org/blog/paris-web-2016</link>
		<guid isPermaLink="true">https://openweb.eu.org/blog/paris-web-2016</guid>
		<dc:date>2016-09-02T11:46:05Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Le collectif Openweb</dc:creator>



		<description>
&lt;p&gt;L'&#233;dition 2016 de Paris Web approche &#224; pas de g&#233;ant (&#171; Paris Web is coming, you know nothing &#187; disait ce cher Tim Berners Snow) : c'est dans moins d'un mois ! &lt;br class='autobr' /&gt; Cette onzi&#232;me &#233;dition se d&#233;roulera du 29 septembre au 1er octobre et explorera selon le c&#233;l&#232;bre motto &#171; les th&#232;mes de l'accessibilit&#233; Web, du design num&#233;rique et des standards ouverts &#187;. &lt;br class='autobr' /&gt;
En fait, des sujets extr&#234;mement divers et vari&#233;s vous attendent : internationalisation, CSS, surveillance du Web, UX, crypto-parties, s&#233;curit&#233;, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/blog/" rel="directory"&gt;Blog&lt;/a&gt;


		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;L'&#233;dition 2016 de Paris Web approche &#224; pas de g&#233;ant (&#171; &lt;em lang=&#034;en&#034;&gt;Paris Web is coming, you know nothing&lt;/em&gt; &#187; disait ce cher Tim Berners Snow) : c'est dans moins d'un mois !&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Cette onzi&#232;me &#233;dition se d&#233;roulera du 29 septembre au 1er octobre et explorera selon le c&#233;l&#232;bre motto &#171; les th&#232;mes de l'accessibilit&#233; Web, du design num&#233;rique et des standards ouverts &#187;.&lt;/p&gt;
&lt;p&gt;En fait, des sujets extr&#234;mement divers et vari&#233;s vous attendent : internationalisation, CSS, surveillance du Web, UX, crypto-parties, s&#233;curit&#233;, &#233;thique, JavaScript, retour d'exp&#233;rience, accessibilit&#233;, qualit&#233;, bonnes pratiques, etc. sans compter les informelles qui s'improviseront durant les journ&#233;es des conf&#233;rences, et probablement aussi durant les ateliers.&lt;/p&gt;
&lt;p&gt;Pour ceux qui &#233;taient l&#224; aux &#233;ditions pr&#233;c&#233;dentes, le lieu vous est d&#233;sormais connu : le magnifique Beffroi de Montrouge. Les ateliers seront quant &#224; eux &#224; la Web School Factory.&lt;/p&gt;
&lt;p&gt;Le th&#232;me de cette ann&#233;e est : &lt;strong&gt;nous avons tous et toutes un r&#244;le &#224; jouer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Plus que jamais, la propre veille technologique est une question importante dans nos m&#233;tiers, parfois d&#233;licate, et Paris Web est manifestement le lieu id&#233;al pour cela, notamment gr&#226;ce &#224; la richesse des &#233;changes sur place, qui nous donne toujours l'impression &lt;i&gt;d'en savoir plus qu'hier, et moins que demain&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Si vous venez pour la premi&#232;re fois, n'h&#233;sitez pas &#224; nous contacter, nous nous ferons un plaisir de discuter avec vous. Dites-vous bien que cet &#233;v&#233;nement est tout sauf impersonnel.&lt;/p&gt;
&lt;p&gt;Encore une fois, un effort remarquable est fait pour l'accessibilit&#233; de l'&#233;v&#233;nement : v&#233;lotypie, LSF, lieux accessibles, doublage francophone pour les conf&#233;rences en anglais, etc. Autant le dire clairement, Paris Web est s&#251;rement l'un des &#233;v&#233;nements en pointe sur ce sujet (si ce n'est le meilleur).&lt;/p&gt;
&lt;p&gt;Bref, d&#233;p&#234;chez-vous de vous inscrire, vous auriez &#224; notre humble avis tort de manquer cela !&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;a href=&#034;https://www.paris-web.fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Paris Web 2016&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://www.paris-web.fr/2016/conferences/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Les conf&#233;rences&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;http://www.paris-web.fr/2016/ateliers/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Les ateliers&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a href=&#034;https://inscriptions.paris-web.fr/&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;Pour vous inscrire&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Post-scriptum : peut-&#234;tre votre(vos) sujet(s) n'a(n'ont) pas &#233;t&#233; retenu(s) ? Si nous n'avions qu'un conseil &#224; donner : ne vous arr&#234;tez pas l&#224;, et parlez de vos sujets. Lors d'autres &#233;v&#233;nements, &#224; Paris Web, sur d'autres sites, sur le v&#244;tre, sur votre blog, etc. ou pourquoi pas ici-m&#234;me : qui sait o&#249; cela pourra vous mener ? ;)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Humeur : chers services tiers, et si vous vous associez &#224; nous ?</title>
		<link>https://openweb.eu.org/blog/humeur-chers-services-tiers-et-si-vous-vous-associez-a</link>
		<guid isPermaLink="true">https://openweb.eu.org/blog/humeur-chers-services-tiers-et-si-vous-vous-associez-a</guid>
		<dc:date>2016-08-01T13:14:21Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Nicolas Hoffmann</dc:creator>


		<dc:subject>Qualit&#233;</dc:subject>
		<dc:subject>D&#233;cideur</dc:subject>
		<dc:subject>D&#233;butant</dc:subject>
		<dc:subject>Expert</dc:subject>
		<dc:subject>Industrialisation</dc:subject>

		<description>
&lt;p&gt;Ou : de l'importance de ne &#171; pas trop d&#233;conner &#187;. Explications. &lt;br class='autobr' /&gt; Il existe une offre pl&#233;thorique de services web : h&#233;bergement, analyses diverses, polices de caract&#232;res, modules divers et vari&#233;s de r&#233;seaux sociaux, zones de chaleur (heatmaps) sur nos pages, publicit&#233; (si si !), services de vid&#233;o, services de commentaires, etc. &lt;br class='autobr' /&gt;
Ces services &#8211; permettez-moi ce truisme &#8211; nous rendent bien service dans notre relation avec nos clients, en tant que prestataires de sites Web, nous devons sans (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/blog/" rel="directory"&gt;Blog&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/qualite" rel="tag"&gt;Qualit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/decideur" rel="tag"&gt;D&#233;cideur&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/debutant" rel="tag"&gt;D&#233;butant&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/industrialisation" rel="tag"&gt;Industrialisation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;Ou : de l'importance de ne &#171; pas trop d&#233;conner &#187;. Explications.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;Il existe une offre pl&#233;thorique de services web : h&#233;bergement, analyses diverses, polices de caract&#232;res, modules divers et vari&#233;s de r&#233;seaux sociaux, zones de chaleur (heatmaps) sur nos pages, publicit&#233; (si si !), services de vid&#233;o, services de commentaires, etc.&lt;/p&gt;
&lt;p&gt;Ces services &#8211; permettez-moi ce truisme &#8211; nous rendent bien service dans notre relation avec nos clients, en tant que prestataires de sites Web, nous devons sans cesse conseiller et orienter pour offrir des informations &#224; nos clients, r&#233;pondre &#224; leurs besoins, et ce toujours dans le but d'am&#233;liorer nos prestations, et par extension d'am&#233;liorer l'efficacit&#233;, la performance, etc. de leurs sites.&lt;/p&gt;
&lt;p&gt;Un fait r&#233;cent nous a particuli&#232;rement marqu&#233; : l'IAB (&lt;span lang=&#034;en&#034;&gt;Interactive Advertising Bureau&lt;/span&gt;) &#233;crit un &lt;em lang=&#034;la&#034;&gt;mea culpa&lt;/em&gt; franc et massif &#224; propos des abus de la publicit&#233; en ligne intitul&#233; &lt;a href=&#034;http://www.iab.com/news/lean/&#034; lang=&#034;en&#034; hreflang=&#034;en&#034;&gt;We messed up&lt;/a&gt; (litt&#233;ralement, &#171; on a d&#233;conn&#233; &#187;). Certes, au point que les utilisateurs, ulc&#233;r&#233;s de nombreux abus, se mettent &#224; utiliser des contre-mesures (bloqueurs de pubs ou de &lt;em ang=&#034;en&#034;&gt;trackers&lt;/em&gt;) ou tout simplement &#224; ignorer des sites devenus impraticables. Certes, &#171; ils ont vraiment d&#233;conn&#233; &#187;.&lt;/p&gt;
&lt;p&gt;Mais si l'on regarde en perspective, ils n'ont pas &#233;t&#233; les premiers &#224; d&#233;conner, et ils ne seront s&#251;rement pas les derniers. &#201;largissons notre regard sur le domaine. Exemples :&lt;/p&gt;
&lt;p&gt;La guerre des navigateurs entre Netscape et Microsoft, qui rivalisaient d'impl&#233;mentations non-standards et non interop&#233;rables, parfois en d&#233;pit du bon sens : &#224; l'&#233;poque, IE4 proposait comme une &#233;volution de permettre par exemple de &lt;a href=&#034;https://fr.wikipedia.org/wiki/%C3%89volution_de_l%27usage_des_navigateurs_web#Netscape_contre_Internet_Explorer&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;jouer des fichiers de musique MP3 en arri&#232;re-plan&lt;/a&gt;. (quoi qu'on en dise, lancer de la musique non-sollicit&#233;e n'a jamais &#233;t&#233; une bonne pratique, et ce n'est pas pr&#232;s de le devenir)&lt;/p&gt;
&lt;p&gt;Suite directe de cette guerre des navigateurs, &lt;a href=&#034;https://fr.wikipedia.org/wiki/%C3%89volution_de_l%27usage_des_navigateurs_web#L.27.C3.A8re_Internet_Explorer&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;IE6 en position d'ultra-dominance&lt;/a&gt; qui n'a pas &#233;volu&#233; entre 2001 et 2006 : les probl&#232;mes de s&#233;curit&#233; s'amoncelaient, les besoins de standards et des nouvelles normes qui mirent encore des ann&#233;es pour arriver. &lt;br class='autobr' /&gt;
Encore dans cette p&#233;riode, les mythiques popups : &#224; priori, une possibilit&#233; pratique, mais dont nombre de sites ont tellement abus&#233;&#8230; que les utilisateurs ulc&#233;r&#233;s ont fini par tuer totalement &#224; grands coups de bloqueurs de popups.&lt;/p&gt;
&lt;p&gt;Toujours dans cette p&#233;riode, l'&lt;a href=&#034;https://fr.wikipedia.org/wiki/Bulle_Internet&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;explosion de la bulle internet&lt;/a&gt; : l'effet &#171; nouvelle &#233;conomie &#187; qui d&#233;borde sur tous les secteurs, des investissements/endettements qui atteignent des niveaux records et des perspectives largement sur-&#233;valu&#233;es.&lt;/p&gt;
&lt;p&gt;Plus proche de nous, le poids moyen des pages qui continue de grimper : &lt;a href=&#034;http://httparchive.org/trends.php?s=All&amp;minlabel=Sep+1+2014&amp;maxlabel=Jun+1+2016#bytesTotal&amp;reqTotal&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;les pages s'alourdissent r&#233;guli&#232;rement&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Etc.&lt;/p&gt;
&lt;p&gt;Bref, nous pourrions &#233;noncer une loi empirique : &lt;strong&gt;tout syst&#232;me qui &#171; d&#233;conne &#187; un peu trop finit par se prendre un s&#233;v&#232;re retour de b&#226;ton&lt;/strong&gt;. Plus g&#234;nant, souvent le retour de b&#226;ton est tel&#8230; qu'on va vers un autre extr&#234;me. C'est exactement ce qu'il se passe avec la publicit&#233; actuellement. N&#233;anmoins, hors de tout manich&#233;isme anti ou pro-publicit&#233;, certains sites ont r&#233;ellement &lt;strong&gt;besoin&lt;/strong&gt; de la publicit&#233; en ligne.&lt;/p&gt;
&lt;p&gt;Revenons &#224; nos clients. Comme vous pouvez l'imaginer sans probl&#232;me, ils sont toujours plus exigeants, et l'exigence de qualit&#233; de nos clients nous invite &#224; leur proposer des services qui r&#233;pondent &#224; ces souhaits. Nous ne m&#233;nageons pas nos efforts pour trouver les meilleurs services, lorsqu'ils existent.&lt;/p&gt;
&lt;p&gt;Et malheureusement, si un service a une qualit&#233; globale plut&#244;t mauvaise, nous pouvons &#234;tre amen&#233;s &#224; le retoquer et &#224; ne m&#234;me pas le proposer. Pour rester dans le sujet de la publicit&#233;, si le client a ce que l'on appelle un &lt;a href=&#034;https://medium.com/@DamienJubeau/budget-de-performance-indispensable-rapidite-sites-web-a771922e89e8&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;budget de performance&lt;/a&gt;, vous vous doutez bien qu'il ne va accepter qu'une publicit&#233; ruine ses efforts &#224; ce sujet.&lt;/p&gt;
&lt;p&gt;Nous en arrivons au titre de ce billet, cette invitation &#224; nous associer. &lt;strong&gt;Nous avons besoin de vous, et vous avez besoin de nous&lt;/strong&gt;. Nous testons la performance, l'accessibilit&#233;, la s&#233;curit&#233;, l'empreinte &#233;cologique, etc. bref, des tas de points de qualit&#233;, car nous voulons bichonner les sites de nos clients.&lt;/p&gt;
&lt;p&gt;Suivez-nous dans cette d&#233;marche.&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;testez&lt;/strong&gt; vos propres services int&#233;gr&#233;s sur un site ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;observez&lt;/strong&gt; les r&#233;sultats ;&lt;/li&gt;&lt;li&gt; &lt;strong&gt;am&#233;liorez&lt;/strong&gt; vos services ;&lt;/li&gt;&lt;li&gt; le cas &#233;ch&#233;ant &lt;strong&gt;&#233;coutez et r&#233;pondez&lt;/strong&gt; aux demandes de vos utilisateurs, qui peuvent &#234;tre de bon conseil.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Certains le font tr&#232;s bien, et nous en sommes ravis. Continuez :)&lt;/p&gt;
&lt;p&gt;&#192; bon entendeur !&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>La troisi&#232;me guerre des navigateurs est termin&#233;e et c'est un bain de sang</title>
		<link>https://openweb.eu.org/ailleurs/la-troisieme-guerre-des-navigateurs-est-terminee-et-c</link>
		<guid isPermaLink="true">https://openweb.eu.org/ailleurs/la-troisieme-guerre-des-navigateurs-est-terminee-et-c</guid>
		<dc:date>2016-07-07T11:43:26Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Nicolas Hoffmann</dc:creator>


		<dc:subject>Industrialisation</dc:subject>
		<dc:subject>D&#233;butant</dc:subject>
		<dc:subject>Expert</dc:subject>
		<dc:subject>Gourou</dc:subject>

		<description>
&lt;p&gt;Daniel Glazman, que nous avions d&#233;j&#224; eu le plaisir d'interviewer ici-m&#234;me, a r&#233;cemment pr&#233;sent&#233; une conf&#233;rence &#224; Web2Day sobrement intitul&#233;e &#171; La troisi&#232;me guerre des navigateurs est termin&#233;e et c'est un bain de sang &#187;. &lt;br class='autobr' /&gt;
Autant ne pas tourner autour du pot, vous devez voir cette vid&#233;o. &lt;br class='autobr' /&gt;
Morceaux choisis : &lt;br class='autobr' /&gt;
On est tous l&#224; (au W3C) pour faire avancer le Web dans une direction g&#233;n&#233;rale, mais avec beaucoup de petites directions particuli&#232;res qui sont les int&#233;r&#234;ts strat&#233;giques de chacun des (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/ailleurs/" rel="directory"&gt;Voir ailleurs&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/industrialisation" rel="tag"&gt;Industrialisation&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/debutant" rel="tag"&gt;D&#233;butant&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/expert" rel="tag"&gt;Expert&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/gourou" rel="tag"&gt;Gourou&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Daniel Glazman, que nous avions d&#233;j&#224; eu le plaisir d'interviewer ici-m&#234;me, a r&#233;cemment pr&#233;sent&#233; une conf&#233;rence &#224; Web2Day sobrement intitul&#233;e &#171; &lt;i&gt;La troisi&#232;me guerre des navigateurs est termin&#233;e et c'est un bain de sang&lt;/i&gt; &#187;.&lt;/p&gt;
&lt;p&gt;Autant ne pas tourner autour du pot, &lt;strong&gt;vous devez voir cette vid&#233;o&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Morceaux choisis :&lt;/p&gt;
&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;On est tous l&#224; (au W3C) pour faire avancer le Web dans une direction g&#233;n&#233;rale, mais avec beaucoup de petites directions particuli&#232;res qui sont les int&#233;r&#234;ts strat&#233;giques de chacun des industriels pr&#233;sents.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Quand on a 58,7% (&#224; propos de Chrome), on a un poids majeur dans la standardisation, on fait ce qu'on veut.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;Les standards sont un acquis dans le paysage du Web (&#8230;), et pourtant, (Google) ils continuent de faire des daubes, vu que c'est pour eux-m&#234;mes, et les autres n'ont qu'&#224; suivre et impl&#233;menter.&lt;/p&gt;
&lt;/blockquote&gt;&lt;blockquote class=&#034;spip&#034;&gt;
&lt;p&gt;On est revenus &#224; un monopole d'un vendeur de navigateur&#8230; qui en profite.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Non seulement, vous ferez un impressionnant tour sur l'histoire du Web, le fonctionnement du W3C, les navigateurs&#8230; mais en plus ce tour sera certifi&#233; sans langue de bois, gr&#226;ce &#224; la verve d&#233;sormais l&#233;gendaire de l'orateur.&lt;/p&gt;
&lt;p&gt;La vid&#233;o est ici : &lt;a href=&#034;https://www.youtube.com/watch?v=ceMLuRBn--M&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;La troisi&#232;me guerre des navigateurs est termin&#233;e et c'est un bain de sang&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;(Bien que le titre soit en anglais, la vid&#233;o est en fran&#231;ais)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="en">
		<title>D-Day : ending or milestone?</title>
		<link>https://openweb.eu.org/articles/d-day-ending-or-milestone</link>
		<guid isPermaLink="true">https://openweb.eu.org/articles/d-day-ending-or-milestone</guid>
		<dc:date>2016-03-22T09:26:04Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>en</dc:language>
		<dc:creator>Elie Slo&#239;m</dc:creator>


		<dc:subject>D&#233;cideur</dc:subject>
		<dc:subject>Qualit&#233;</dc:subject>
		<dc:subject>M&#233;thodes</dc:subject>

		<description>
&lt;p&gt;So you've been working for months on the new version of your Website? I guess you're pretty sure that the day this new version will go online will be a very important date for the users, for your customers, or for the Web, maybe. But it won't. The day your new version goes online is not an ending but the beginning of a story with your users. &lt;br class='autobr' /&gt; (Note: this article was previously published in French &#8211;if you have any feedback on the translation made by Nicolas Hoffmann and Coralie Mercier, (&#8230;)&lt;/p&gt;


-
&lt;a href="https://openweb.eu.org/articles/" rel="directory"&gt;Articles&lt;/a&gt;

/ 
&lt;a href="https://openweb.eu.org/decideur" rel="tag"&gt;D&#233;cideur&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/qualite" rel="tag"&gt;Qualit&#233;&lt;/a&gt;, 
&lt;a href="https://openweb.eu.org/methodes" rel="tag"&gt;M&#233;thodes&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_chapo'&gt;&lt;p&gt;So you've been working for months on the new version of your Website? I guess you're pretty sure that the day this new version will go online will be a very important date for the users, for your customers, or for the Web, maybe. But it won't. The day your new version goes online is not an ending but the beginning of a story with your users.&lt;/p&gt;&lt;/div&gt;
		&lt;div class='rss_texte'&gt;&lt;p&gt;(Note: &lt;a href=&#034;http://blog.temesis.com/post/2009/04/20/jour-j-aboutissement-ou-jalon&#034; class=&#034;spip_out&#034; rel=&#034;external&#034;&gt;this article was previously published in French&lt;/a&gt; &#8211;if you have any feedback on the translation made by Nicolas Hoffmann and Coralie Mercier, please let us know.)&lt;/p&gt;
&lt;p&gt;Today, I'm going to address one of the &lt;strong&gt;most significant challenges&lt;/strong&gt; in managing a web project. A common error is to consider the official date of release of the site as the end date of the project. This &lt;strong&gt;perception is wrong&lt;/strong&gt;, and it has major consequences not only on the quality of the site, but also on the motivation of the teams. This is why I speak of this matter to you today.&lt;/p&gt;
&lt;p&gt;Considering the release date of a site as the end of a web project is a &lt;strong&gt;quite natural mistake&lt;/strong&gt;. The teams responsible for the production of the site are indeed &lt;strong&gt;judged by their hierarchy at this time&lt;/strong&gt; and not necessarily on the next phase, that is to say, when the site takes life and evolves. Moreover, focusing on creating the site is much more attractive, as it's a very varied step, often exciting, than focusing on the life phase of the site, which is much less rewarding. And yet.&lt;/p&gt;
&lt;p&gt;The official release date of a site, always long awaited, is often &lt;strong&gt;disappointing for the teams of the Web project&lt;/strong&gt;. Certainly for project teams and their managers who are waiting for a new version, whose production takes several months, this date actually marks a completion.&lt;/p&gt;
&lt;p&gt;However, for the site itself and its users, it is a date that marks the &lt;strong&gt;beginning of an even more important phase&lt;/strong&gt;. In fact, the release date of the website marks the beginning of the life phase, of adjustments and production of new contents and services.&lt;/p&gt;
&lt;p&gt;Whatever your efforts, your rigor and competence during the site creation phase, nothing will replace the feedback of real users of the site that will come during the life of the site. Sure, you can anticipate a lot of things, but if you choose to offer at the official release date a complete and perfect site, you make a beeline for &lt;strong&gt;failure and disappointment&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The success of an online service comes in the long run&lt;/strong&gt;. Whatever your skills, the volume and quality of your content, the feedback and congratulations that you may have when releasing the site will only be temporary, and bear very little importance after years following the release date.&lt;/p&gt;
&lt;p&gt;It is indeed in the months and years that follow the release date of the site you can show that your site is not a set of content and services introduced one time at a particular date, but a &lt;strong&gt;set of content and services in constant evolution&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Operationally, this vision can lead to apply major rules to drive your Web project. And since nothing beats a recipe, here are seven ;-)&lt;/p&gt;
&lt;ul class=&#034;spip&#034; role=&#034;list&#034;&gt;&lt;li&gt; &lt;strong&gt;Accept imperfection&lt;/strong&gt;: As I have often written, it is the first fundamental step in the Web business. This acceptance is a required step to adopt a continuous improvement process and not perpetually suffer the inherent imperfections of Web business.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Do not dream&lt;/strong&gt;: If you do not want to be disappointed, do not expect too much out of your site release, and get ready to work for a long time.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Anticipate updates&lt;/strong&gt;: separate fundamental contents from those that can be published later on. The impression that will be left by a large amount of information will never be as good for your site as a regular publication of new content.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Limit your ambitions&lt;/strong&gt;: plan changes after the site release, and if the project seems too heavy, move optional components intended for the first version to future publications.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Plan ahead&lt;/strong&gt;: allocate the budget of your site on the long term and integrate costs related to its further development. Do not bury your head in the sand. Right from the design of the functional specifications, it is possible to detect items and identify human resources necessary to maintain the site.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Be careful&lt;/strong&gt;: remember that each feature, each section, each content mentioned in the specifications of your future site implies costs. Those costs will be spent much later.&lt;/li&gt;&lt;li&gt; &lt;strong&gt;Standards are for you, not for the others&lt;/strong&gt;: compliance with web standards, best quality practices, accessibility rules are not just constraints, they will lead you to improve the scalability of your site. You will make mistakes. You will! Standards should especially be used to ensure that these mistakes are easy to correct and do not cost you too much.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;There you go! &lt;strong&gt;Good luck for the release of your site&lt;/strong&gt;. If you can grasp the D-day as a milestone and not as the end, &lt;strong&gt;you will not be disappointed&lt;/strong&gt; ;-)&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
