Une des forces d'eZ Publish est son mécanisme de surcharge et de spécialisation. Par exemple, pour l'affichage des contenus, les squelettes peuvent être définis dans plusieurs designs. L'un de ces designs sera celui par défaut du sous-site (siteaccess) courant, d'autres des designs additionnels, enfin un design par défaut sera utilisé en cas d'échec des précédents.

Par exemple si vous créez un mini-site satellite de votre site toto, vos réglages ressembleront sans doute à cela:

[DesignSettings]
SiteDesign=toto_minisite
AdditionalSiteDesignList[]=toto_front
StandardDesign=standard

C'est à dire que pour afficher un contenu, eZ déterminera d'abord grâce à son mécanisme de surcharges (override) le squelette à utiliser, puis il cherchera ce template. Dans le design du minisite (toto_minisite), puis dans celui du site par défaut (toto_front). Enfin, pour afficher quelque chose s'il n'a pas trouvé de template dans les 2 précédents, il se rabattra par défaut sur le design standard d'eZ.

Mais cette force peut aussi être une faiblesse. Si un utilisateur essaie d'afficher un contenu dans un contexte que vous n'avez pas prévu, le contenu sera donc affiché avec le design standard. Et si vous avez fait l'erreur, comme dans mon exemple, d'utiliser un design fournis par eZ comme défaut, ce ne sera pas avec un template contenant vos règles de gestion. Ce template pourra afficher certains champs que vous auriez préféré masquer. Ou pourra permettre d'afficher des contenus dont vous avez oublié d'interdire l'accès.

Une solution est d'utiliser un de vos designs comme dernière alternative:

SiteDesign=toto_minisite
AdditionalSiteDesignList[]=toto_front
StandardDesign=toto

Ainsi, si vous n'avez défini de template pour un objet dans aucun de vos designs, le contenu ne s'affichera pas.

Cette solution est bien sûr un peu radicale, car vous vous privez de tous les templates fournis par eZ, vous obligeant à les surcharger dans vos designs[1]. Mais elle augmente un peu le niveau de "sécurité" de votre site.

Une solution moins radicale est de créer un template n'affichant rien, et des règles de surcharge par défaut utilisant ce template. Par exemple ajouter à la fin de votre override.ini.append.php (sachant que les règles s'appliquent par ordre d'apparition dans ce fichier, donc celles-ci ne concerneront que les contenus qui ne remplissent aucune des conditions précédentes) des lignes du genre:

[null-1]
Source=node/view/full.tpl
MatchFile=null.tpl
Subdir=templates
[null-2]
Source=content/view/full.tpl
MatchFile=null.tpl
Subdir=templates

(attention à ne pas oublier de choisir des noms différents pour chacune des règles).

Ainsi, chaque tentative d'affichage d'un contenu avec la vue "full", si elle n'a pas été interceptée par une règle précédente dans le fichier, utilisera votre template null.tpl. Il faudra probablement ajouter ce type de règles pour la plupart des vues disponibles du module content.

Peut-être existe-t-il une solution plus simple, je laisse la parole aux experts eZ...

Edit du 27.08 les experts ont commencé à parler, et comme il l'indique un peu plus bas, Damien vient de consacrer un billet à quelques méthodes pour sécuriser un site eZ Publish. Merci à lui.

Notes

[1] cela dit, côté front, il est rare d'utiliser certains des templates par défaut