2011-12-15 18 views
5

He estado leyendo un código de WordPress PHP en GitHub y me encontré con que el autor (un desarrollador senior de WordPress) estaba poniendo esta línea de código en el inicio de cada archivo:Proteger archivo PHP de acceso directo

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é el acceso directo es peligroso?

Respuesta

7

Esta constante probablemente esté configurada en el archivo PHP de WordPress principal, por lo tanto, si no está configurado, no podrá acceder a la página principal.

Constants no son algo que un usuario pueda modificar, están en el código y solo se pueden modificar editando el archivo PHP. Entonces, si un hacker pudiera establecer esta constante, entonces tendrías problemas mayores, porque eso implicaría que realmente edite tus archivos PHP.

El acceso directo puede no ser peligroso (no me cites), pero no tiene sentido. Acceder directamente a un plugin de WordPress (por ejemplo) no hará nada, ya que el plugin necesita ejecutarse a través de WordPress.

0

Normalmente, no puede declarar las variables del lado del servidor, por lo que es seguro.

Lo más probable es otro juego de páginas esa variable por algunos criterios, (supera la verificación, ip o lo que quieras)

Como se ha dicho que la página sola no funcionará porque necesita leer esa variable de someware (un incluir o la página se incluye en)

0

acceso directo puede ser peligroso - como el hacker puede trabajar fuera de su lógica de negocio y posiblemente encontrar maneras alrededor de él (también conocido como cosas que no están escritas en el código para protegerse a sí mismo).

Otra posibilidad es que las cosas están codificados en el programa que puede resultar en el acceso directo a las bases de datos y de adquirir conocimientos de su red, etc ...

1
defined('ABSPATH') or die("Cannot access pages directly."); 

esta constante se define en los archivos de raíz como index.php.
es para comprobar si ABSPATH está definido, por lo que este archivo se incluye con el archivo 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

Cuestiones relacionadas