Impedire l'accesso o eliminare automaticamente readme.html, license.txt, wp-config-sample.php

15 dic 2010, 11:53:00
Visualizzazioni: 19.6K
Voti: 16

Solo una rapida domanda che potrebbe aiutare un po' con la sicurezza. Ho notato che il file readme.html contiene il numero della versione. Ricompare dopo ogni aggiornamento, così come license.txt e wp-config-sample.php.

Esiste un modo semplice per far sì che WordPress rimuova automaticamente questi file dopo un aggiornamento?

Ho già bloccato la visualizzazione del numero di versione nei meta tag, feed RSS, atom, ecc.

Sono consapevole che questo tipo di sicurezza non è esattamente così utile, ma ho pensato che potrebbe essere un piccolo inizio. Ho sentito che le persone possono semplicemente controllare la versione di jQuery inclusa in WP-includes e incrociarla con la versione di WP che lo includeva.

0
Tutte le risposte alla domanda 5
2
22

Non è davvero necessario rimuovere questi file. È molto più semplice bloccare l'accesso ad essi. Se stai utilizzando URL ottimizzati, avrai già un file .htaccess. Usare .htaccess per bloccare i file è sicuro e devi solo aggiungere una direttiva una volta sola.

Il blocco dei file si effettua aggiungendo una direttiva a .htaccess in questo modo:

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

Quindi, per bloccare readme.html fai così:

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

Fai lo stesso con il file di licenza o qualsiasi altro file a cui vuoi impedire l'accesso. Basta aprire .htaccess con Blocco note o qualsiasi altro editor di testo di base, aggiungere le direttive e salvare, assicurandoti che l'editor di testo mantenga esattamente il nome del file - senza alcun .txt alla fine.

15 mag 2011 15:22:53
Commenti

Alla fine ho optato per questa soluzione. Funziona perfettamente.

Sahas Katta Sahas Katta
16 mag 2011 07:49:06

Attenzione, la sintassi sopra indicata è valida solo fino ad Apache 2.2! Per le versioni successive (Apache 2.4 e oltre) utilizzate Require all denied (sostituendo quelle due righe interne). Maggiori dettagli qui

Frank N Frank N
7 mar 2017 09:00:57
1

Ecco la mia soluzione:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (non esistente) anziché 403 (vietato) per evitare qualsiasi indizio sull'esistenza.
  • anche nelle sottocartelle (es. temi e plugin, che potrebbero offrire opportunità di attacco)
  • insensibile alle maiuscole/minuscole, estensione flessibile, intercetta anche README.html o license.html (sentiti libero di aggiungere i soliti sospetti come changelogs|faq|contributing)

Personalmente, bloccherei anche:

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

Nota:

  • '?:' dichiara semplicemente che la parentesi non è da considerare per il matching (nessuna importanza).
  • richiede che RewriteEngine sia on (molto probabilmente lo è. Sarebbe raro usare WordPress senza... (permalink brutti, ecc...)).
  • inserisci prima della sezione # BEGIN WordPress nel tuo file .htaccess
6 set 2015 09:44:36
Commenti

C'è qualche vantaggio nell'usare RewriteRule invece di FilesMatch?

Prof. Moriarty Prof. Moriarty
27 set 2023 22:10:13
4
add_action('core_upgrade_preamble','mia_funzione_per_eliminare_file');

Modifica: puoi anche provare questi

add_action('upgrader_pre_install','mia_funzione_per_eliminare_file');
add_action('upgrader_post_install','mia_funzione_per_eliminare_file');
15 dic 2010 12:37:46
Commenti

Grazie, ho capito la funzionalità php unlink e funziona, ma c'è un problema. L'hook che hai fornito sembra eseguirsi semplicemente visitando la sezione Aggiornamenti nel Pannello di controllo. C'è un altro hook per dopo che l'aggiornamento è avvenuto?

Sahas Katta Sahas Katta
15 dic 2010 22:16:31

darò un'occhiata e ti farò sapere

Atif Atif
16 dic 2010 12:23:40

@Sahas @atif089 Siete riusciti a farlo funzionare?

INT INT
12 mag 2011 13:38:20

Invece di eliminare (nel caso tu voglia effettivamente leggere il readme!) puoi usare questo nella tua funzione chmod("/path/to/readme.txt", 0640);

Bysander Bysander
10 ott 2016 15:07:38
0

Soluzione 2023

Se utilizzi Apache, attualmente nella versione 2.4.5x, come tuo web server e vuoi seguire il percorso del file ".htaccess", allora ecco alcune opzioni (in aggiunta alla risposta di Frank) per farlo:

Restituire "Forbidden" all'utente:

In questo caso, l'"utente"/"hacker"/"avversario"/"pentester" capirebbe che questi file esistono sul tuo server ma non ha accesso ad essi!

<FilesMatch "(?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?)">
      Require all denied
</FilesMatch>

Restituire "404" all'utente:

In questo caso, teoricamente, l'"utente"/"hacker"/"avversario"/"pentester" assumerebbe che questi file non esistano affatto sul tuo server!

<FilesMatch "(?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?)">
      Redirect 404
</FilesMatch>
21 lug 2023 13:46:25
0

Soluzione attuale per WordPress, aggiornata al 2025

Sto combinando le risposte/commenti precedenti e applicandoli alla domanda effettiva (oltre a risolvere anche i problemi di sicurezza delle risposte precedenti).

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) index.php [L]
RewriteRule \.(?:psd|log|cmd|exe|bat|c?sh)$ index.php [L]

Usando index.php [L] tutto verrà reindirizzato a WordPress come pagina 404 del sito, invece di mostrare la pagina di errore 403/404/etc del server web. In questo modo, il potenziale hacker non vedrà il cambiamento nella pagina di errore visualizzata.

30 mar 2025 20:25:50