WordPress wp-admin 403 en load-styles.php / load-scripts.php (Wordfence WAF / auto prepend file)
Resumen
Después de una actualización de WordPress o plugin, algunos sitios de repente ver una pantalla wp-admin rota:
- Trabajos de inicio de sesión, pero el panel de administración parece sin estilo, en blanco o medio cargado.
- Navegador DevTools &rar; Red muestra 403 Prohibido para:
wp-admin/load-styles.phpwp-admin/load-scripts.php
- Desactivar plugins de wp-admin, o incluso renombrar
wp-content/plugins, sí no Arregla el 403.
En muchos casos, la causa raíz es Wordfence Web Application Firewall (WAF) todavía siendo cargado a través de auto_prepend_file en .htaccess y/o .user.ini, incluso después de que el plugin esté deshabilitado.
nbsp;
Síntomas
- WordPress admin carga parcialmente o sin CSS/JS.
- En su navegador bordesquo;s DevTools &rar; pestaña de red:
wp-admin/load-styles.phpy/owp-admin/load-scripts.phpshow 403 Prohibido.
- El registro de errores de Apache muestra líneas similares a:
[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php [authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php - Renaming
wp-content/pluginso desactivar plugins del panel de control hace no resolver el error.
nbsp;
Causa de la raíz
Cuando Wordfence WAF está habilitado en Protección ampliada modo, no es sólo un plugin de WordPress normal. También se inyecta en PHP a través de auto_prepend_file.
Específicamente, Wordfence:
- Añada un
auto_prepend_filedirectiva a su configuración de PHP a través de:.htaccess(Apache).user.ini(Configuración PHP por directorio)
- Puntos que la directiva a un archivo de arranque como:
# In .htaccess php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php; In .user.ini auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
Esta fuerza cada solicitud de PHP (frontend, wp-admin, AJAX, cron, etc.) para cargar wordfence-waf.php antes WordPress. Incluso si usted deshabilita o elimina el plugin de Wordfence, el bootstrap de WAF todavía puede:
- Bloquear caminos específicos (por ejemplo.
load-styles.php,load-scripts.php,wp-cron.php), o - Fail debido a códigos obsoletos/mermados después de una actualización de WordPress o PHP.
Porque esto se ejecuta en el nivel PHP / Apache, simplemente desactivar el plugin en wp-admin no es suficiente.
nbsp;
Cómo confirmarlo?
1. Chequee los registros de errores de Apache / PHP
Busque en su host virtual o registro de errores de Apache global para líneas como:
[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-styles.php
[authz_core:error] AH01630: client denied by server configuration: /home/USER/public_html/wp-admin/load-scripts.php
Si usted ve 403s en estos puntos finales de WordPress núcleo y el desactivación de plugin normal hace sentirlos;t help, suspect WAF / auto prepend file.
2. Check .user.ini en la raíz del documento
- Via SSH o gestor de archivos, vaya a su raíz del sitio (por ejemplo
/home/USER/public_html). - Abierto
.user.iniy buscar una línea similar a:auto_prepend_file = "/home/USER/public_html/wordfence-waf.php"
3. Check .htaccess para Wordfence WAF
- En el mismo directorio, abierto
.htaccess. - Busque un bloque de Wordfence WAF, por ejemplo:
# Wordfence WAF # <IfModule mod_php7.c> php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php # </IfModule>
Si existen, Wordfence WAF sigue siendo inyectado en cada solicitud PHP, incluso si el plugin está desactivado.
nbsp;
Corrección: Properly Decommission Wordfence WAF
Advertencia: Sólo haz esto si tienes la intención de deshabilitar Wordfence WAF. Si todavía quieres Wordfence, utiliza su propia UI para reconfigurar Protección Extendida.
Paso limitadobsp;1: Desactivar plugin de Wordfence (si es posible)
- Entra a wp-admin.
- Ve a Plugins " Consejera " Plugins instalados.
- Desactivar Seguridad de Wordfence.
Si wp-admin está completamente roto, puede saltar este paso y ir directamente a los archivos de edición.
Paso de la acción;2: Retirar auto_prepend_file de .user.ini
- En su raíz de documento de WordPress, abierto
.user.ini. - Encuentra la línea Wordfence:
auto_prepend_file = "/home/USER/public_html/wordfence-waf.php" - Comentarlo o eliminarlo , por ejemplo:
; auto_prepend_file = "/home/USER/public_html/wordfence-waf.php" - Guarda el archivo.
Paso de la acción;3: Retirar auto_prepend_file de .htaccess
- En el mismo directorio, abierto
.htaccess. - Busque el bloque de Wordfence WAF, por ejemplo:
# Wordfence WAF <IfModule mod_php7.c> php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php </IfModule> - Comentar o eliminarlo:
# Wordfence WAF disabled # <IfModule mod_php7.c> # php_value auto_prepend_file /home/USER/public_html/wordfence-waf.php # </IfModule> - Guarda el archivo.
Paso limitadobsp;4: Cáqueo de código de operaciones claro / reiniciar PHP (opcional pero recomendado)
- Si usted está usando PHP-FPM / LSAPI / FastCGI, reinicia PHP-FPM o LiteSpeed / Apache.
- Alternativamente, pida a su proveedor de alojamiento que despeje la opcache PHP para esa cuenta.
Paso de la prueba wp-admin
- Abierto
/wp-admin/en su navegador. - Abrir DevTools &rar; Red, luego recargar la página.
- Verificar:
wp-admin/load-styles.phpde retornos 200.wp-admin/load-scripts.phpde retornos 200.- La interfaz de administración se ve normal de nuevo (CSS/JS cargado).
Si usted añadiera previamente cualquier anulación temporal (por ejemplo, a wp-admin/.htaccess que permitieron incondicionalmente esos archivos), puede eliminarlos una vez que todo funciona normalmente.
nbsp;
Opcional: Limpiar archivos de Wordfence
Si usted está completamente hecho con Wordfence, también puede:
- Eliminar o renombrar:
wp-content/plugins/wordfence/wp-content/wflogs/(Directorio de registro)
- Retirar
wordfence-waf.phpdesde la raíz de su documento si ya no se hace referencia en ningún lugar.
Prevención de futuras cuestiones
- Tenga en cuenta que los plugins de seguridad con WAF / “Protección avanzada limitadardquo; puede modificar:
.htaccess.user.ini- Comportamiento global de PHP
auto_prepend_file
- Desactivar el plugin del panel de control no automáticamente eliminar estos ganchos de bajo nivel.
- Si usted ve extraños 403 o “client negado por configuración del servidor implicardquo; en archivos de WordPress núcleo como
load-styles.php,load-scripts.php, owp-cron.php, siempre busque:auto_prepend_filelíneas en.user.iniy.htaccess.- Archivo de arranque de WAF de sobra como
wordfence-waf.php.
Resumen
Cuestión: WordPress administración roto, load-styles.php / load-scripts.php volver 403, incluso después de desactivar plugins.
Causa: Wordfence WAF todavía inyectado a través de auto_prepend_file en .htaccess / .user.ini, carga wordfence-waf.php en cada solicitud y bloqueo de esos puntos finales.
Arregla:
- Incremento de Wordfence deshabilitado (si es posible).
- Retirar
auto_prepend_filereferencias awordfence-waf.phpde.htaccessy.user.ini. - Recarga PHP / Apache y retest wp-admin — los 403 en
load-styles.php/load-scripts.phpDebería desaparecer.