web-dev-qa-db-fra.com

La peine de limiter l’accès direct aux fichiers de thème?

J'ai rencontré de temps en temps l'extrait suivant dans les thèmes:

if ( ! defined('ABSPATH')) exit('restricted access');

C'est au début de certains (tous?) PHP fichiers d'un thème et il est censé empêcher l'accès direct au fichier par des sources néfastes.

Je constate que cela ne fait pas partie de Twenty Ten ou Eleven et je ne l'ai jamais vu recommandé dans la documentation officielle de WordPress. Cela me semble une bonne idée, mais je ne connais pas suffisamment la sécurité pour pouvoir en juger et je ne trouve pas grand-chose avec Google.

Est-ce quelque chose que je devrais avoir dans mes thèmes personnalisés? Si tel est le cas, devrait-il figurer dans tous les fichiers PHP ou dans quelques-uns seulement?

31
mrwweb

Habituellement, vous n’en avez pas besoin. Mais… il y a au moins un cas Edge:

  • Si un fichier de thème est un modèle part ,
  • et il utilise des variables globales du contexte appelant (fichier parent),
  • et register_globals est on,
  • et il s’agit simplement d’utiliser ces variables sans aucun contrôle de sécurité…

… Un attaquant peut appeler ce fichier, définir les variables manquantes avec GET ou POST et faire en sorte que le fichier de thème les affiche. Et puis il est un problème de sécurité.

Donc… la meilleure option n'est pas une vérification du contexte comme celle de votre exemple, mais un bon code: évitez les variables globales, vérifiez leur contenu avant de les imprimer.

Dans certains cas, j'ajoute la vérification du contexte lorsque je pense que quelqu'un d'autre utilisera mon code et le modifiera sans souci de sécurité. Ça ne fait pas mal.

26
fuxia