web-dev-qa-db-fra.com

Mon Child-Theme Functions.php a-t-il besoin si {die} la sécurité s'y trouve?

Je suis nouveau sur PHP, mais j'ai remarqué à peu près tous les PHP fichiers ont un extrait de sécurité, le script "Mourir si on n'y accède pas correctement" au début; ma question , un thème enfant functions.php a-t-il également besoin de quelque chose comme ça pour le sécuriser?

PHP:

if ( ! defined( 'ABSPATH' ) ) {
    die( 'Direct Access Not Permitted' );
}
6
CSS Apprentice

Est-ce nécessaire il? Probablement pas (autre que cette affaire Edge , les accessoires @bravokeyl). Devriez-vous l'ajouter? A mon avis oui:

  1. Depuis un POV de codage/architecture, vous déclarez que "ce fichier nécessite WordPress".
  2. Tout accès direct à l'un des fichiers de votre thème (utilisateurs curieux, bots, "script kiddies", etc.) peut potentiellement laisser échapper un peu d'informations (système de fichiers le plus probable) et/ou déverser vos journaux d'erreurs (par exemple, Undefined function get_header in /bada/bing/bada/boom).
  3. En réitérant 1), c'est juste une bonne pratique.

Cependant , je absolument déteste ceci:

die( 'Direct Access Not Permitted' );

OMI cela devrait simplement être:

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

Il ne sert à rien d'avoir ce "message". Et je suis un grand fan de exit. Il communique le fait qu'il s'agit d'un scénario attendu possible et que, dans ce scénario, je souhaite simplement quitter. J'utilise die pour les scénarios "inattendus", comme les erreurs d'écriture du système de fichiers, les erreurs de base de données, etc.

6
TheDeadMedic

La plupart du temps, il n'est pas nécessaire de vérifier defined( 'ABSPATH' ) dans le thème de l'enfant.

2
bravokeyl

Non, functions.php générerait PHP fatals s’il est chargé directement car il utilise l’API WordPress.

Si functions.php a essayé d'amorcer et de charger WordPress, alors oui, ce serait nécessaire, mais si vous l'avez fait, alors quelque chose s'est passé horriblement mal et vous devez recommencer à zéro

2
Tom J Nowell

Le chargement direct de presque tous les fichiers WordPress (sinon de tous) directement ne donnera rien de plus qu'un écran blanc de la mort si votre rapport d'erreurs est correctement défini. En effet, cela provoquera une erreur fatale PHP lors de l'arrêt de l'exécution, et les paramètres publics corrects pour l'affichage des erreurs consistent à ne pas les afficher. Toutefois, si vous essayez de masquer votre utilisation de WordPress ou du moins d'aller le plus loin possible, vous voudrez peut-être effectuer cette vérification, mais à l'intérieur du si déclenchez un code de réponse 404.

0
Liam Bailey