Impedir el acceso o eliminar automáticamente readme.html, license.txt, wp-config-sample.php

13

Solo una pregunta rápida que podría ayudar un poco con la seguridad. Noté que el archivo readme.html tiene el número de versión listado. Reaparece después de cada actualización y también lo hacen licence.txt y wp-config-sample.php.

¿Hay una manera fácil de hacer que WordPress elimine automáticamente estos archivos después de una actualización?

Ya bloqueé el número de versión para que no se muestre en las metaetiquetas, los canales RSS, el átomo, etc.

Sé que este tipo de seguridad no es exactamente que tanto útil, pero sólo pensé que podría ser un pequeño comienzo. Escuché que la gente simplemente puede verificar la versión de jQuery que se incluye en WP-includes y hacer una referencia cruzada de qué versión de WP lo envió.

Sahas Katta
fuente

Respuestas:

19

Realmente no necesita eliminar estos archivos. Es mucho más fácil simplemente bloquear el acceso a ellos. Si usa URL bonitas, ya tiene un archivo .htaccess. Usar .htaccess para bloquear los archivos es seguro y solo tiene que agregar una directiva una vez.

El bloqueo de archivos se realiza agregando una directiva a .htaccess como esta:

    <files filename.file-extension>
         order allow,deny
         deny from all
    </files>

Entonces, para bloquear readme.html, haga esto:

    <files readme.html>
         order allow,deny
         deny from all
    </files>

Haga lo mismo con el archivo de licencia o con cualquier otro archivo al que desee evitar que alguien acceda. Simplemente abra .htaccess en el Bloc de notas o cualquier otro editor de texto básico, agregue las directivas y guarde, asegurándose de que el editor de texto mantenga el nombre del archivo exactamente, sin ningún .txt al final.

Elpie
fuente
1
Esta es en realidad la opción con la que terminé yendo. Funciona perfectamente
Sahas Katta
1
¡Tenga en cuenta que la sintaxis anterior solo es válida hasta Apache 2.2! Luego use Require all denied(reemplazando esas 2 líneas internas) para Apache 2.4 y superior. Más detalles aquí
Frank Nocke
5

Aquí está mi opinión:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (no existente) en lugar de 403 (prohibido) para evitar cualquier pista sobre la existencia.
  • también en subcarpetas (es decir, temas y complementos, que pueden ofrecer oportunidades de ataque)
  • sin distinción entre mayúsculas y minúsculas, con extensión flexible, también captura README.html o license.html (siéntase libre de agregar sospechosos típicos como changelogs | faq | contribuyendo)

Personalmente, también bloquearía:

RewriteRule \.(?:psd|log|cmd|exe|bat|c?sh)$ - [NC,F]

nótese bien:

  • '?:' simplemente declara que el paréntesis no coincide (sin importancia).
  • requiere que RewriteEngine sea on(lo más probable es que sea raro usar Wordpress sin ... (enlaces permanentes feos, etc.)).
  • inserte antes de la # BEGIN WordPresssección en su .htaccess
Frank Nocke
fuente
3
add_action('core_upgrade_preamble','my_function_to_delete_files');

Editar: también puedes probar estos

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');
Atif Mohammed Ameenuddin
fuente
Gracias, descubrí la función de desvinculación de php y funciona, pero un problema. El enlace que proporcionó parece ejecutarse simplemente visitando la sección Actualizaciones en el Panel de control. ¿Hay otro gancho para después de que haya ocurrido la actualización?
Sahas Katta
1
echaré
@Sahas @ atif089 ¿Lograste que esto funcione?
INT
En lugar de eliminar (en caso de que realmente quiera leer el archivo Léame), puede usar esto en su funciónchmod("/path/to/readme.txt", 0640);
Bysander