Actualmente estoy construyendo un tema de WordPress desde cero, como un medio para 'aprender en el trabajo'. Tengo una experiencia moderada con el trabajo de back-end, aunque he dependido mucho de PageBuilders en el pasado. Ahora deseo crear un tema sin ningún generador de páginas como un medio para aumentar su velocidad de carga, etc.
Por ahora, estoy analizando la seguridad de los archivos del sitio web y me encontré con el siguiente término:
<?php if ( ! defined( 'ABSPATH' ) ) { exit; // Exit if accessed directly } ?>Entiendo que esto impediría el acceso directo a los archivos web. No estoy completamente seguro de lo que significa esto. Por ejemplo, todavía podría acceder a los archivos a través de FTP, a través del servidor y a través del panel de WordPress. ¿Hay algún otro acceso directo que esto impida? ¿Quizás impidiendo el acceso a través de complementos de WordPress, etc.?
Con esto en mente, ¿sería correcto suponer que el código anterior debe colocarse en cada archivo dentro del tema como estándar? ¿Habría alguna excepción?
Cualquier explicación adicional sobre esto, sería muy apreciada.
Evita que el usuario público acceda directamente a sus archivos .php a través de la URL. Porque si su archivo contiene algunas operaciones de E/S, eventualmente puede activarse (por un atacante) y esto podría causar un comportamiento inesperado.
Por lo tanto, el uso de fragmentos puede evitar el acceso desde sus archivos (directamente) y garantiza que los archivos de su tema se ejecutarán únicamente en el entorno de WordPress.
Uso:
Espero eso ayude
ABSPATH es una constante de PHP definida por WordPress en la parte inferior de wp-config.php :
/* That's all, stop editing! Happy blogging. */ /** Absolute path to the WordPress directory. */ if ( !defined('ABSPATH') ) define('ABSPATH', dirname(__FILE__) . '/'); Como puede ver en el bloque de comentarios anterior, WordPress no recomienda modificar estas líneas de código , probablemente porque muchos complementos y temas dependen de ABSPATH para verificar si sus archivos PHP se ejecutan dentro del entorno de WordPress.
Si usa este fragmento en la parte superior de su archivo wp-config.php , finalizará la ejecución de wp-config.php , porque ABSPATH aún no se ha definido en ese punto. Y otros archivos que dependen de wp-config.php fallarán (es decir, romperá su sitio web).
if ( ! defined( 'MY_CONSTANT' ) ) { exit; } es un fragmento ampliamente utilizado por archivos PHP de complementos y temas solo por convención . En teoría, significa que puede agregar su propia constante en la parte inferior de su wp-config.php y obtendrá el mismo resultado práctico.
Tu wp-config.php :
if ( !defined('MY_CONSTANT') ) define('MY_CONSTANT', 'fool');Su tema o archivo de complemento:
<?php if ( ! defined( 'MY_CONSTANT' ) ) { exit; // Exit if accessed directly }Más información
Definición de una constante en PHP: http://php.net/manual/en/language.constants.syntax.php
Constantes mágicas de PHP: http://php.net/manual/en/language.constants.predefined.php