Détournement de liens de mise à jour

La librairie nebule en php, qui est utilisée par sylabe, intègre depuis ce matin le code nécessaire à la résolution des graphes des liens de mise à jour d’un objet. Ce bout de code est encore en cours de test.

Il est notamment utilisé directement comme test par sylabe. Le premier usage est de gérer l’affichage des petites icônes qui pullulent dans l’interface. Les buts sont de pouvoir faciliter la mise à jour de ces mêmes icônes en cas de besoin et de ne plus avoir à les copier lors d’une nouvelle installation de sylabe. Et c’est le mode lnk qui en profite en premier. La fonction aff_img_upd permet de renvoyer le code html pour afficher l’image, en fait l’objet de l’image, le tout en tenant compte des mises à jours.

Mais il apparaît fastidieux et volumineux de remplacer le bout de code html :

<img src="ll.png" id="iconepuce" alt="Lien">

par :

<?php aff_img_upd('e9a97c8fb1c6257284e7fa6f4a4c40458deff45dd591f939bc123cd4378de697','Lien','iconepuce'); ?>

Or, il est possible de détourner les liens de mises à jours pour créer des raccourcis d’objets. Dans notre exemple, en créant un lien de type u entre e9a9 et l’objet e9a97c8fb1c6257284e7fa6f4a4c40458deff45dd591f939bc123cd4378de697, on peut faire simplement appel à l’affichage de l’objet e9a9 qui n’existe pas et avoir l’affichage de l’image attendu… Le code précédent ressemble maintenant à ça :

<?php aff_img_upd('e9a9','Lien','iconepuce'); ?>

Il y a cependant quelques contraintes. Par définition, les liens de nebule acceptent des objets dont les empreintes sont de toutes tailles à partir du moment qu’il y a au moins un caractère, notés en hexadécimal, en minuscule et que ce ne soit pas zéro (réservé). Dans le code de sylabe, les objets ne sont pas acceptés si la taille de l’empreinte ne fait pas au minimum un quart de la longueur de bloc de l’algorithme de prise d’empreinte. Donc sylabe est plus restrictif que nebule. La contrainte de taille d’empreinte dans sylabe a été mise en place pour éviter les erreurs grossières lors de la génération de liens à la main. Et puis, ces objets ne pourront jamais avoir de contenu puisqu’il n’existe pas d’objet avec cette empreinte, et donc toute tentative d’en forcer un échouera à la vérification d’intégrité.

On peut imaginer des raccourcis tels que 571abe, faceb00k ou 90091e

Dans sylabe, la restriction est faite lors du nettoyage des variables crlink, crlsrc, crldst, crlmet, prtobj, unprtobj, supobj, forcesupobj, entuid et lnkfltobj. Il est tout à fait envisageable pour certaines variables d’accepter une taille très faible. Par contre, toutes les variables devant contenir une entité, un lien complet ou un objet à (dé)protéger ou supprimer, il n’est pas nécessaire de réduire la taille de variable attendu. On peut donc alléger le test pour les variables crlsrc, crldst et crlmet. Un minimum de 4 est raisonnable.

La diffusion de la nouvelle version avec ces icônes nébulisées doit attendre que les-dites icônes soient hébergées par bachue afin que toutes les instances de sylabe puisse se mettre à jour.

Les icônes glossy

Voici quelques icônes utilisées dans les pages web de sylabe :


Ces icônes ont été récupérées dans le répertoire /usr/share/icons/oxygen/ sous Linux. Elles sont sous licence LGPL (GNU Lesser General Public License).

Elles tranchent un peu avec le thème graphique global des pages sylabe. J’attends que Diana n’en redessine des nouvelles plus sobres :-)