Para asegurar cualquier sistema informático es necesario conocerlo. Conocer la estructura de WordPress y el conocimiento de los posibles vectores de ataques son necesarios para poder tener una visión amplia cara a evitar sustos y problemas en un futuro.
WordPress ha evolucionado a lo largo del tiempo, aunque muchos de sus componentes se mantienen en su versión actual para evitar problemas e incompatibilidades.
Al descargar el paquete desde su sitio oficial o clonarse gracias a svn o github, en lo que primero que debemos fijarnos es en su estructura de directorios y archivos.
index.php
licencia.txt
license.txt
readme.html
wp-activate.php
wp-admin
wp-blog-header.php
wp-comments-post.php
wp-config.php
wp-config-sample.php
wp-content
wp-cron.php
wp-includes
wp-links-opml.php
wp-load.php
wp-login.php
wp-mail.php
wp-settings.php
wp-signup.php
wp-trackback.php
xmlrpc.php
Contenido
wp-admin
En este directorio encontraremos todos los archivos necesarios para la administración de WordPress. En el se encuentran entre otros los scripts de instalación (install.php), actualización (update.php y update-core.php). Es, sin duda, uno de los directorios más importantes. En wp-admin encontraremos, entre otros, los archivos que nos aportan funcionalidad y apariencia del panel de administración (directorios css y js)
wp-admin/includes/schema.php
CREATE TABLE $wpdb->terms (
term_id bigint(20) unsigned NOT NULL auto_increment,
name varchar(200) NOT NULL default '',
slug varchar(200) NOT NULL default '',
term_group bigint(10) NOT NULL default 0,
PRIMARY KEY (term_id),
KEY slug (slug($max_index_length)),
KEY name (name($max_index_length))
) $charset_collate;
En este archivo podremos encontrar todo lo relacionado con la base de datos, sus tablas y los datos que WordPress genera a la hora de su instalación.
wp-content
Se trata de uno de los directorios principales en WordPress. En él se encuentran toda la información que el usuario, de forma dinámica, va a incluir en su proyecto. Las funcionalidades y apariencia de nuestra web se verán reflejadas aquí en los directorios plugins, themes, así como las traducciones en el directorio languages o archivos e imágenes en el directorio uploads. Este directorio en concreto ha de ser especialmente vigilado en materia de permisos dada la información confidencial que puede albergar cara a una posible intrusión.
wp-includes
Aquí se encuentra el motor de WordPress. Todas las librerías, clases y funciones necesarias para que nuestra instalación se comporte como tiene que hacerlo. Ojo, no toques nada aquí a no ser que sepas lo que haces, o corres el riesgo de romper la instalación.
wp-includes/functions.php
En este archivo se encuentran funciones generales para la realización de diferentes operaciones dentro de WordPress. No hay que confundir este archivo con el archivo functions.php que podrás encontrar dentro del directorio wp-content/themes/TU-THEME/, el cual actúa y provee funcionalidades en función del Theme activo en ese momento.
wp-includes/version.php
?php
/**
* WordPress Version
*
* Contains version information for the current WordPress release.
*
* @package WordPress
* @since 1.1.0
*/
Aquí encontraremos la versión real que WordPress está utilizando en este momento, junto con los requisitos mínimos necesarios que debe disponer el servidor para correr la instalación.
wp-includes/query.php
En este archivo localizarás las principales funciones de la clase WP_Query() y sus métodos con los que realizar consultar a la base de datos.
wp-includes/wp-db.php.
En este archivo se define la clase wpdb, que junto a sus funciones, permitirá a WordPress comunicarse con la base de datos MySQL.
wp-includes/plugin.php
WordPress está basado en acciones,filtros y funciones. Gracias a este archivo, las funcionalidades que incorporemos a nuestro proyecto gracias a los Plugins podrán comunicarse con el core de WordPress.
wp-config-sample.php
** MySQL settings - You can get this info from your web host
** The name of the database for WordPress
define( 'DB_NAME', 'database_name_here' );
** MySQL database username
define( 'DB_USER', 'username_here' );
** MySQL database password
define( 'DB_PASSWORD', 'password_here' );
Tras realizar la instalación de WordPress, este archivo se renombrará a wp-config.php. Sirve de esqueleto para realizar una configuración básica e inicial. Gracias a este archivo, podremos conectar nuestro WordPress con la base de datos, estableciendo los parámetros necesarios como son el usuario y password que nos autentica ante ella, el host donde está alojada, el prefijo de las tablas creadas de WordPress, los salts que ayudan a fortalecer nuestras claves, y otros muchos valores que podemos a posteriori incorporar con el fin de darle a nuestra instalación mayor seguridad y rendimiento.
wp-login.php
Al acceder a este archivo el usuario será redirigido a un Dashboard de control, y mediante la insercción de sus credenciales, será autenticado en el sistema asignándole los permisos en función del rol asignado.
wp-settings.php
// Load most of WordPress.
require( ABSPATH . WPINC . '/class-wp-walker.php' );
require( ABSPATH . WPINC . '/class-wp-ajax-response.php' );
require( ABSPATH . WPINC . '/capabilities.php' );
require( ABSPATH . WPINC . '/class-wp-roles.php' );
require( ABSPATH . WPINC . '/class-wp-role.php' );
require( ABSPATH . WPINC . '/class-wp-user.php' );
require( ABSPATH . WPINC . '/class-wp-query.php' );
Se trata de un archivo que actúa a modo de checklist, verificando que puede acceder a los archivos necesarios para cargar WordPress.
WordPress nació con la idea de mantener la compatibilidad ante futuras versiones. De esta manera, cada componente ha de estar alojado en el lugar de la estructura de directorios que tiene asignada.
Si necesitas un profesional que te ayude con tu WordPress, puedes contactar conmigo a través del siguiente formulario.
Tus comentarios son bien recibidos...