diff options
Diffstat (limited to 'files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html')
-rw-r--r-- | files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html b/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html deleted file mode 100644 index 05a6a7a699..0000000000 --- a/files/fr/mozilla/add-ons/webextensions/securite_bonne_pratique/index.html +++ /dev/null @@ -1,63 +0,0 @@ ---- -title: Bonnes pratiques de sécurité -slug: Mozilla/Add-ons/WebExtensions/securite_bonne_pratique -tags: - - Débutant - - Extensions - - Intermédiaire - - Sécurité - - WebExtensions - - revue -translation_of: Mozilla/Add-ons/WebExtensions/Security_best_practices ---- -<div>{{AddonSidebar}}</div> - -<p>Voici une liste des meilleures pratiques à suivre pour protéger les utilisateurs de votre extension. Si vous ne suivez pas ces bonnes pratiques, votre extension risque d'échouer les avis sur <a href="https://addons.mozilla.org">addons.mozilla.org</a>, Si vous ne suivez pas ces bonnes pratiques, votre extension risque d'échouer les avis survous empêchant ainsi de distribuer votre module ou de le bloquer à l'installation dans Firefox.</p> - -<ul> - <li><strong>Ne pas injecter ou incorporer des scripts distants</strong><br> - Si vous identifiez un service que vous souhaitez utiliser dans votre extension, n'injectez pas le script du service à partir d'une source distante. Une telle approche est risquée, car le code pourrait être modifié sans que vous le sachiez — et, surtout, sans la connaissance et le consentement de l'utilisateur des extensions — compromettant la sécurité de votre extension. Vous devriez donc ajouter une copie du script dans le code de votre extension.</li> - <li><strong>Assurez-vous d'insérer le contenu distant en toute sécurité</strong><br> - Assurez-vous de suivre les bonnes pratiques lorsque votre extension utilise du contenu distant : - <ul> - <li>insérez des chaînes à l'aide de méthodes de manipulation DOM natives sécurisées : <a href="/fr/docs/Web/API/Document/createElement">document.createElement</a>, <a href="/fr/docs/Web/API/Element/setAttribute">Element.setAtttribute</a>, et <a href="/fr/docs/Web/API/Node/textContent">Node.textContent</a>.</li> - <li>utilisez les fonctions <code>attr()</code> et <code>text()</code> pour insérer des chaînes.</li> - <li>assainir le contenu HTML avec <a href="https://github.com/cure53/DOMPurify">DOMPurify</a>.</li> - <li>utiliser des commandes de moteur de modèle qui échappent à tout code HTML avant de l'insérer.</li> - </ul> - - <p>Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Safely_inserting_external_content_into_a_page">Insérer du contenu externe en toute sécurité dans une page</a>.</p> - </li> - <li><strong>Utiliser XHR pour Google Analytics</strong><br> - Si vous souhaitez ajouter Google Analytics à votre extension, n'insérez pas le code JavaScript Google Analytics. Il est plutôt recommandé d'utiliser l'API REST Google Analytics dans un appel XHR, par exemple: - <pre class="brush: js">let request = new XMLHttpRequest(); -let message = - "v=1&tid=" + GA_TRACKING_ID + "&cid= " + GA_CLIENT_ID + "&aip=1" + - "&ds=add-on&t=event&ec=AAA&ea=" + aType; - -request.open("POST", "https://www.google-analytics.com/collect", true); -request.send(message);</pre> - Vous pouvez trouver plus d'informations dans l'article de blog <a href="https://blog.mozilla.org/addons/2016/05/31/using-google-analytics-in-extensions/">Utilisation de Google Analytics dans les Extensions</a>.</li> - <li><strong>Utiliser la stratégie de sécurité du contenu de l'extension standard (CSP)</strong><br> - La stratégie standard limite les sources à partir desquelles votre extension peut charger les ressources <a href="/fr/docs/Web/HTML/Element/script"><code><script></code></a> et <a href="/fr/docs/Web/HTML/Element/object"><code><object></code></a>, et interdit les pratiques potentiellement dangereuses, telles que l'utilisation de <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a>. Bien que la clé manifest.json <a href="/fr/Add-ons/WebExtensions/manifest.json/content_security_policy">content_security_policy</a> vous permette de modifier la stratégie de sécurité du contenu de votre extension, cette opération n'est pas recommandée car elle empêche les extensions d'exécuter involontairement du contenu malveillant. Si votre CSP modifié autorise l'injection de script à distance, votre extension sera rejetée par AMO pendant la révision.<br> - Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Content_Security_Policy#Default_content_security_policy">Stratégie de sécurité du contenu par défaut</a>.</li> - <li><strong>Partagez des objets avec JavaScript sur la page avec soin</strong><br> - Firefox fournit <code>wrappedJSObject</code> afin qu'un script de contenu puisse accéder aux objets JavaScript créés par les scripts de page. Le danger ici est qu'une page Web malveillante puisse, par exemple, modifier les fonctions des objets JavaScript pour exécuter son propre code.<br> - Pour plus d'informations, voir <a href="/fr/Add-ons/WebExtensions/Sharing_objects_with_page_scripts">Accès aux objets de script de page à partir de scripts de contenu</a>.</li> - <li><strong>Utilisez <code>window.eval()</code> dans les scripts de contenu avec prudence</strong><br> - Vous devez être très prudent lorsque vous exécutez du code dans le contexte d'une page. Une page Web malveillante pourrait tenter d'exécuter du code en exploitant l'utilisation de <code>window.eval()</code>. Il peut le faire, par exemple, en redéfinissant les objets que votre code pourrait vouloir évaluer.<br> - Pour plus d'informations, voir <a href="/fr/docs/Web/JavaScript/Reference/Global_Objects/eval#Don't_use_eval_needlessly!">Ne pas utiliser eval inutilement !</a></li> - <li><strong>Créez votre interface utilisateur avec des composants d'extension</strong><br> - Créez l'interface utilisateur de votre extension à l'aide des <a href="/fr/Add-ons/WebExtensions/user_interface">fonctions intégrées de l'interface utilisateur d'extension</a>, telles que les pages groupées, pageAction et les fenêtres contextuelles sur pageAction et browserAction. N'ajoutez pas d'éléments d'interface utilisateur, tels que des boutons ou des barres d'outils, directement aux pages Web. Si vous le faites, les scripts sur la page Web pourraient compromettre votre extension. Voir <a href="https://www.grepular.com/Keybase_Browser_Extension_Insecure">extension du navigateur Keybase Insecure</a> pour un exemple des problèmes potentiels.<br> - Si les composants de l'interface utilisateur standard ne suffisent pas, utilisez des iframes avec des <a href="/fr/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URL de données</a> pour éviter les empreintes digitales ou ajoutez des iframes au code d'extension afin qu'une page ne puisse pas interagir avec le contenu de votre interface utilisateur, comme les boutons.</li> - <li><strong>Ajouter eslint-plugin-no-unsanitized à ESLint</strong><br> - Si vous utilisez ESLint pour vérifier votre code d'extension, pensez à ajouter eslint-plugin-no-unsanitized. Ce plug-in de règles ESLint signale les instances où du code non-initié provenant d'API ou d'entrées utilisateur peut provoquer des problèmes.</li> - <li><strong>Ne pas injecter les chemins moz-extension directement</strong><br> - Lorsque les liens, les inclusions ou les images injectés incluent des chemins vers <code>moz-extension://{hash}</code> le script de suivi d'une page peut utiliser cette information pour <a href="https://en.wikipedia.org/wiki/Device_fingerprint">identifier</a> l'utilisateur, car le hachage (UUID) est unique à l'installation de l'extension et, par conséquent, l'utilisateur.<br> - La meilleure façon d'éviter ce problème est de suivre les conseils généraux concernant l'injection de contenu. Cependant, si vous pensez que l'injection de contenu est votre seule approche pratique, assurez-vous que les chemins moz-extension sont incorporés dans un iframe en utilisant une <a href="/fr/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">URL de données</a> ou l'attribut <a href="/fr/docs/Web/HTML/Element/iframe#attr-srcdoc">srcdoc</a>.</li> - <li><strong>S'assurer que les bibliothèques tierces sont à jour</strong><br> - tierces réputées seront mises à jour lorsque des problèmes seront détectés. L'utilisation de bibliothèques tierces périmées (et potentiellement non sécurisées) est fortement déconseillée et, lorsqu'un risque important est identifié, l'AMO peut agir pour bloquer les extensions en utilisant le code obsolète.<br> - Par conséquent, utilisez toujours la dernière version des bibliothèques tierces lorsque vous créez votre extension. Ensuite, prenez connaissance des mises à jour de ces bibliothèques et soyez prêt à mettre à jour votre extension pour vous assurer qu'elle utilise une version à jour de la bibliothèque.</li> - <li><strong>Ne pas modifier les bibliothèques tierces</strong><br> - Les modifications apportées à une bibliothèque tierce sont un indicateur significatif qu'un développeur essaie de cacher du code malveillant dans un code généralement connu et approuvé. AMO va donc essayer de détecter les modifications apportées aux bibliothèques tierces et peut désactiver les extensions lorsqu'il trouve des modifications.</li> -</ul> |