Si je vous suis, vous voulez dire que la chaîne entière était dans la base de données, c'est-à-dire avec {$link} comme partie de la chaîne. Je ne sais pas exactement comment fonctionne smarty, mais il me semble que s'il peut même faire cela, cette chaîne devra avoir eval() exécuté sur elle. (A moins que smarty ne fasse quelque chose de funky qui m'échappe, encore une fois, je ne travaille pas avec smarty).
Ce que ça veut dire, c'est que vous avez une installation très peu sécurisée. Si votre base de données subit une injection SQL, l'ensemble de votre serveur pourrait être compromis.
Le fait de les exécuter à partir d'un fichier codé en dur dans l'application ne pose pas de problème de sécurité majeur, puisque vous contrôlez le code qui a appelé le fichier .tpl et que vous contrôlez le fichier .tpl lui-même. C'est une utilisation "sûre" d'eval, car il faudrait déjà avoir un accès sérieux au serveur pour pouvoir l'exploiter, le genre d'accès qui serait la raison de l'exploiter.
Mais une fois que vous accédez à ces données à partir d'une base de données, vraisemblablement avec un système d'administration qui vous permet d'ajouter de nouveaux modèles dynamiques, vous avez créé une fenêtre dans votre système dans laquelle un attaquant peut se faufiler.