Déclaration des hôtes (hosts) autorisés

Dans Stargate SG-1, la Porte des Étoiles n’autorise à voyager que vers des adresses connues et validées. Et bien Silverpeas 6.4.8 adopte la même philosophie : désormais, seuls les hôtes externes que vous aurez déclarés explicitement seront autorisés dans votre plateforme. Tout hôte non déclaré sera masqué.
Tout parasite Goa’uld qui tenterait de s’infiltrer sera bloqué 😜

A partir de Silverpeas 6.4.8, deux propriétés apparaissent dans le fichier org/silverpeas/util/security.properties. Elles sont livrées vides, ce qui est le réglage le plus restrictif.

Propriété Effet lorsqu’elle est vide
security.external.media.hosts.allowed Les images, vidéos et sons hébergés hors de Silverpeas ne sont plus affichés ni exportés.
security.external.iframe.hosts.allowed Les iframes externes sont refusées à la saisie et retirées à l’affichage.

Contenus concernés : les contenus riches (éditeur WYSIWWYG) des publications (Gestion documentaire, actualités, …), les champs de type contenu riche des formulaires, les messages des forums et les exports.

Ce qu’il faut savoir

  • Le filtrage est réversible. Il s’applique au moment de l’affichage : les contenus enregistrés ne sont pas modifiés. Donc déclarer un hôte après coup rétablit l’affichage.
  • HTTPS est obligatoire bien entendu. Une source référencée en HTTP simple sera toujours écartée, quelle que soit la valeur des propriétés.
  • La valeur * autorise tous les hôtes pour les médias, ce qui redonne le comportement de la version 6.4.7. Mais nous vous déconseillons cette option.
    Elle n’est pas prise en compte pour les iframes : leurs hôtes doivent être déclarés un à un.
  • Les ressources de Silverpeas référencées par une adresse relative sont toujours acceptées. En revanche, nous recommandons de déclarer aussi le nom d’hôte de votre propre serveur Silverpeas dans les deux listes : des contenus peuvent le référencer par une adresse absolue, par exemple le permalien d’un fichier affiché dans une iframe.
  • Les images embarquées dans le contenu lui-même (data:image/…) sont conservées.

💡Astuce

Avant la mise à jour, il peut être utile de recenser les hôtes externes référencés par vos contenus. Sur un serveur Linux, vous pouvez le faire avec la commande suivante. Cela vous donnera la liste du plus fréquent au plus rare.

grep -rhoE '<(img|iframe|video|audio|source)[^>]*src="https?://[^/"]+' "$SILVERPEAS_HOME/data/workspaces" \
  | grep -oE 'https?://.*' | sort | uniq -c | sort -rn

Et rappel :  Déclarer également le nom d’hôte de votre propre serveur, ça coute rien et ça évitera des loupés.

Mise en œuvre

Ajoutez les paramètres dans un fichier de configuration XML placé dans SILVERPEAS_HOME/configuration/silverpeas/ :

<configfile name="util/security.properties">
  <parameter key="security.external.iframe.hosts.allowed">intranet.exemple.fr, www.youtube.com, player.vimeo.com</parameter>
  <parameter key="security.external.media.hosts.allowed">intranet.exemple.fr, cdn.partenaire.fr</parameter>
</configfile>

Les hôtes sont séparés par une virgule, sans protocole ni chemin. Appliquez ensuite la configuration avec la commande silverpeas configure, puis redémarrez Silverpeas.