Raccourcir les url est marrant et parfois utile. Et parfois craignos, aussi, c'est pour ça que je préfère héberger mon service, fermé à tout autre que moi.
Pour ça, le petit script php développé par Bronco puis amélioré par Yomli est parfait : simple, sans base de donnée, déployable rapidement et avec les fonctionnalités utiles :
Enfin, presque rapidement, parce que si ce machin n'est pas à la racine du site, ça marche moins bien.
Chez moi, cela se passe de cette façon :
index.php
à la racine du site, qui va appeler les trucs utiles de yomli-go (<?php include_once('./yomligo/index.php') ?>
Évidement ça ne marche pas “comme ça”. Il faut pister, dans le dossier yomligo, tout ce qui demande un chemin, et ajouter avant le nom du dossier.
Par exemple :
include 'data/config.php';
Va devenir :
include 'yomligo/data/config.php';
Et faut faire ça un peu partout. On peut aussi en profiter pour nettoyer le “index.php” et laisser que ce qu'on souhaite inclure…
Après ça, ça marche à peu prêt.
Le plus propre, évidement, serait de déclarer une variable pour le dossier où est yomligo et de pusher ensuite ça amont refaire ça pour que ça corresponde à la façon dont j'ai envie de l'utiliser.
Yomli-go utilise trois pages : index, user et admin. La première est celle de base pour raccourcir le lien, la seconde sert à gérer ses propres liens (stockés dans le localstorage), la dernière gère les liens en tant qu'admin.
Je ne suis pas très convaincue par la gestion “user” de yomli, d'autant que laisser ça ouvert à tout vent est une mauvaise idée. Au passage, la gestion “fermée” est complètement buguée…
Il faudrait mieux avoir :
Pour les tests :
Dans un cas comme dans l'autre, il faut un mécanisme de mitigation de la brute force : après 6 essais, attendre une minute, puis ensuite 30 secondes entre chaque essai raté (durant 10 essais max) puis banni durant 1 jour.
La base de donnée des liens doit être protégée de l'accès par le reste du web MAIS pas chiffrée parce que osef : si tu met des liens secrets dans ce genre de truc, c'est pas malin.