Rediriger en HTTPS quand l’utilisateur est connecté

Passez automatiquement en HTTPS pour les pages contenant des informations privées (espace privé, login, crayons...)

Intérêt d’utiliser HTTPS

Pour éviter que les informations de connexion circulent en clair sur le réseau, ou pour empêcher l’usurpation d’identité, il est de bon ton de protéger certaines pages de SPIP, généralement :

  • l’espace privé
  • la page de login

Mais il est aussi important de protéger les pages publiques qui permettent d’une manière ou de l’autre de modifier la base de données, par exemple avec les crayons.

Fonctionnement du plugin

Le plugin est très simple et change simplement le protocole de HTTP à HTTPS si :

  • le visiteur est connecté (i.e. quand il existe un cookie de session)

ou si

  • la page demandée est la page de login

A noter : l’espace privé est bien protégé puisqu’on ne peut y accéder qu’en s’étant authentifié, ce qui crée le cookie de session.

Configuration du serveur web

Pour utiliser le plugin, il faut évidemment que le serveur web (Apache, par exemple) soit configuré pour servir en HTTP et en HTTPS.

Contenu mixte HTTP et HTTPS

Normalement, SPIP générera toute la page en HTTP, ou en HTTPS, mais pas de contenu mixte. En revanche, les librairies Javascript, par exemple OpenLayers, ou tout autre code ajouté à la main devra gérer HTTP et HTTPS pour éviter ce contenu mixte. Pour cela, il est possible d’ajouter un proxy PHP par exemple.

Attention : Pour les versions de SPIP antérieures à 2.1.11, vous devez modifier le core. Pour que tout fonctionne bien, les pages servies en HTTP et en HTTPS doivent piocher dans un cache différent, sinon tout se mélange. Si votre installation de SPIP ne contient pas encore la modification http://core.spip.org/projects/spip/repository/revisions/17941, il faut l’ajouter à la main :

  • ouvrir le fichier ecrire/public/assembler.php
  • dans la fonction calculer_contexte_implicite(), ajouter la ligne avec HTTPS pour obtenir :
            $contexte_implicite = array(
                    'squelettes' => $GLOBALS['dossier_squelettes'],
                    'host' => $_SERVER['HTTP_HOST'],
                    'https' => $_SERVER['HTTPS'],
                    'espace' => test_espace_prive(),
                    'marqueur' => (isset($GLOBALS['marqueur']) ?  $GLOBALS['marqueur'] : ''),
                    'notes' => $notes?$notes('','contexter_cache'):'',
            );

Cette modification est incluse dans le core de spip à partir de 2.1.11, et également dans spip3. La manipulation n’est donc pas nécessaire pour ces dernières versions.

Dernière modification de cette page le 9 février 2019

Discussion

12 discussions

  • Merci pour ta réactivité.

    Je vais retenter le coup dès que le nouveau zip est disponible.

    Répondre à ce message

  • 1

    Bonjour,

    j’essaye d’installer le plugin RedirHTTPS (v 0.1.0) sur SPIP version 3.0.2. depuis le back-office.
    Le téléchargement se fait sans problème mais le plugin reste inactif et considéré comme « incompatible » par le gestionnaire de plugins.

    Y a-t-il une incompatibilité connue ?
    Si oui, une mise à jour est-elle prévue ?

    Merci d’avance pour vos lumières

    • je viens de mettre a jour les bornes supérieures de compatibilité du plugin, je ne crois pas qu’il y ait d’incompatibilités... Tu peux récupérer le plugin sur la zone par svn, ou sinon attendre que se génère le nouveau zip.

    Répondre à ce message

Ajouter un commentaire

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom