Pas à pas: création de ce blog
Ce premier article est amené à servir de sommaire/historique sur les étapes de la création de ce blog (d'un point de vue technique). Il est dans l'esprit voulu de ce site: me servir de fourre-tout référence pour reprendre des travaux ou des recherches là où je les ai laissés tout en mettant ces informations à disposition de tout un chacun.
Pour voir un de mes sites "plus propre", et pas à l'état de brouillon, vous pouvez visiter https://cours-math.juliendaury.fr/ . C'est en le créant que j'ai appris ce que j'expose ici.
Héberger son site:
- Auto-hébergement
- ou choisir un hébergeur
→ mon choix: abonnement chez OVH (offre hébergement perso + nom de domaine pour en gros 50€/an)
Choix d'un CMS (pas indispensable techniquement mais bon, qui a construit un site entièrement codé à la main depuis 1999 ?!)
→ mon choix: PluXML
télécharger l'archive, la dézipper puis l'uploader à la racine du site
Personnalisation de PluXML:
- installation:
- déclarer un administrateur
- supprimer le fichier install.php et le dossier update
- réglages de base:
- se connecter à la partie administration
- dans "configuration de base":
- titre du site, sous-titre, autoriser ou non les commentaires (et choisir s'ils seront modérés ou pas), etc...
- dans "options d'affichage":
- choisir le nombre d'articles/de commentaires par page, leur ordre, la taille par défaut des images, ...
- dans "configuration avancée":
- activer la réécriture d'URL
- activer la compression gzip
- capcha antispam: voir si cookies Google envoi d'e-mails (version 5.8)
------------------------------------------------------------------------------------
tests de sécurité avec cette version de base:
- https://www.dareboost.com/fr
→ erreur 404 (page introuvable, normal il n'y a pas encore de page d'accueil déclarée)
→ (une fois l'article publié) 88% - https://report-uri.com/home/analyse
- → annalyse CSP:
- No policies found for https://blog.juliendaury.fr/
- No policies found for https://blog.juliendaury.fr/
- → annalyse CSP:
- https://securityheaders.com/?q=https%3A%2F%2Fblog.juliendaury.fr&followRedirects=on
→ note de F: Strict-Transport-Security ; Content-Security-Policy ; X-Frame-Options ; X-Content-Type-Options ; Referrer-Policy ; Permissions-Policy
Dramatique !!!
priorités:
- améliorer la sécurité pour les visiteurs:
- instaurer une espèce de par-feu (déclarer tout ce qui est autorisé et interdire tout le reste → très exigeant et chronophage !)
interdire "les attaques de type XSS (Cross-Site Scripting)"
→ politique de sécurité (CSP): Content-Security-Policy: script-src 'self' - interdire le "clickjacking": faire en sorte que cette page ne puisse être intégrée à une iframe
"X-Frame-Options" - interdire le "MIME Sniffing": désactiver la détection automatique de type de ressource
→ configurer un en-tête HTTP "X-Content-Type-Options" - donner le moins d'info possible à un éventuel attaquant: N'exposez pas votre version de PHP:
dans php.ini: expose_php = off - éviter ou contrôler les ressources tierces
- instaurer une espèce de par-feu (déclarer tout ce qui est autorisé et interdire tout le reste → très exigeant et chronophage !)
- performance / qualité du code
- cache
- allégement des fonts: L'ordre à respecter pour vos formats est le suivant : EOT, WOFF2, WOFF, TTF, puis SVG.
- images de la bonne taille
- CSS:
éviter les sélecteurs CSS dupliqués
utilisation raisonnée des couleurs
éviter le mot clé !important
éviter les sélecteurs superflus
propriétes CSS surchargées - volume de la page
- éviter les éléments vides
- éviter les "scripts inline" trop longs
- référencement (SEO)
- description de la page
→ qui doit être placée dans la balise, au début du code. - robots.txt
- propriétés de Open Graph (réseaux sociaux, notamment Facebook)
- "og:type"
- "og:url"
- "og:image"
- choisir les liens à suivre ou non par les robots
- définir balises H1 et H2
- description de la page
------------------------------------------------------------------------------------
Autre point de sécurité:
- forcer https et supprimer "www" dans l'adresse du site
dans .htaccess
# BEGIN -- Pluxml
Options -Multiviews
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# Réécriture des urls
RewriteRule ^(?!feed)(.*)$ index.php?$1 [L]
RewriteRule ^feed/(.*)$ feed.php?$1 [L]
## http -> https ##JU
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
## Suppressing the `www.` at the beginning of URLs
# (1)
RewriteCond %{HTTPS} =on
RewriteRule ^ - [E=PROTO:https]
RewriteCond %{HTTPS} !=on
RewriteRule ^ - [E=PROTO:http]
# (2)
# RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]
RewriteRule ^ %{ENV:PROTO}://%1%{REQUEST_URI} [R=301,L]
</IfModule>
# END -- Pluxml
Personnalisation de PluXML:
- installer un plugin de PluXML:
- télécharger un plugin
- le dézipper
- l'uploader dans le dossier "plugin" du site
- l'activer dans "configuration avancée>plugins>" onglet "plugins inactifs"
téléchargement ici: https://wiki.pluxml.org/divers/plugins-officiels/
et là: https://wiki.pluxml.org/divers/plugins-non-officiels/ - Sélection de Plugins:
- spxPluginDownloader (pour télécharger ensuite facilement les autres plugins)
- spxtynimce (dans le dépôt spx de spxPluginDownloader)
→ penser à l'activer
→ ce plugin doit être configuré:
j'ai personnellement modifié:- dans "Ajoute le contenu de votre texte dans l'initialisation de tinymce" j'ai tapé dans la zone de texte suivante:
selector: 'textarea', //Browser-based spell checking browser_spellcheck: true, // contextmenu: false formats: { // bold: [{ inline: 'b', remove: 'all' },{ inline: 'strong', remove: 'all' },{ inline: 'span', styles: { fontWeight: 'bold' } }], underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:!0}], strikethrough: [{inline:"s",remove:"all"},{ inline: 'span', styles: { 'text-decoration': 'line-through' }, exact: true }] }
la ligne "browser_spellcheck: true," permet de récupérer la correction orthographique du navigateur (il faut juste faire "CTRL - clic droit" au lieu de faire simplement un clic droit sur le mot à corriger)
les lignes commençant par "underline" et "strikethrough" sont des modifications du code HTML généré par spxTyniMCE
-
dans utiliser aviary: non
-
puis "enregistrer"
- dans "Ajoute le contenu de votre texte dans l'initialisation de tinymce" j'ai tapé dans la zone de texte suivante:
- SPXPRISM : coloration syntaxique du code
→ nécessite spxshortcodes
→ voir https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript+arduino+bash+batch+bbcode+c+cpp+cmake+css-extras+diff+http+java+javadoclike+json+json5+latex+lua+makefile+markup-templating+pascal+perl+php+phpdoc+php-extras+plsql+powershell+prolog+python+regex+sql+xml-doc+yaml&plugins=line-highlight+line-numbers+autolinker+show-language+jsonp-highlight+highlight-keywords+inline-color+command-line+normalize-whitespace+data-uri-highlight+toolbar+copy-to-clipboard+download-button+match-braces+diff-highlight+treeview - MySubCategories
- MySearch
- artPS
- MyContact
- spxPluginDownloader (pour télécharger ensuite facilement les autres plugins)