Omar Abid
He estado leyendo código PHP de WordPress en GitHub y descubrí que el autor (un desarrollador senior de WordPress) estaba poniendo esta línea de código al comienzo de cada archivo:
defined('ABSPATH') or die("Cannot access pages directly.");
¿Cómo protege esto el archivo del acceso directo? ¿No puede un hacker simplemente definir la constante ABSPATH y luego cargar el archivo?
Además, ¿por qué es peligroso el acceso directo?
Esta constante probablemente esté configurada en el archivo PHP principal de WordPress, por lo que si no está configurada, entonces no está accediendo a la página principal.
constantes no son algo que un usuario pueda modificar, están en el código y solo se pueden cambiar editando el archivo PHP. Por lo tanto, si un pirata informático pudiera establecer esta constante, entonces tendría problemas mayores, porque eso implicaría que él realmente editara sus archivos PHP.
El acceso directo puede no ser peligroso (no me cites), pero no tiene sentido. Acceder directamente a un complemento de WordPress (por ejemplo) no hará nada, ya que el complemento debe ejecutarse a través de WordPress.
defined('ABSPATH') or die("Cannot access pages directly.");
esta constante se define en los archivos raíz como index.php.
es para verificar si ABSPATH está definido para que este archivo se incluya con la raíz u otro archivo.
y no acceso directo con URL.
de esta manera es una de las mejores formas de proteger los archivos del acceso directo
Normalmente, no puede declarar variables del lado del servicio, por lo que es seguro.
Lo más probable es que otra página establezca esa variable según algunos criterios (pasar verificación, ip o lo que quieras)
Como se dijo, esa página por sí sola no funcionará porque necesita leer esa variable de algún software (una inclusión o la página está incluida)
El acceso directo puede ser peligroso, ya que el pirata informático puede resolver su lógica comercial y posiblemente encontrar formas de evitarlo (es decir, cosas que no están escritas en el código para protegerse).
Otra posibilidad es que las cosas estén codificadas en el programa, lo que puede dar como resultado el acceso directo a las bases de datos, obtener conocimiento de su red, etc.