Prevenire acces sau ștergere automată a fișierelor readme.html, license.txt, wp-config-sample.php

15 dec. 2010, 11:53:00
Vizualizări: 19.6K
Voturi: 16

Doar o întrebare rapidă care ar putea ajuta puțin la securitate. Am observat că fișierul readme.html afișează numărul versiunii. Acesta reapare după fiecare actualizare, la fel ca și fișierele licence.txt și wp-config-sample.php.

Există o metodă simplă prin care WordPress să șteargă automat aceste fișiere după o actualizare?

Deja am blocat afișarea numărului de versiune în meta tag-uri, fluxuri RSS, atom etc.

Știu că acest tip de măsură de securitate nu este chiar atât de util, dar am crezut că ar putea fi un mic început. Am auzit că oamenii pot pur și simplu verifica versiunea jQuery inclusă în WP-includes și să o coreleze cu versiunea WordPress care o include.

0
Toate răspunsurile la întrebare 5
2
22

Nu este nevoie să eliminați aceste fișiere. Este mult mai ușor să blocați accesul la ele. Dacă utilizați URL-uri prietenoase, aveți deja un fișier .htaccess. Folosirea .htaccess pentru a bloca fișierele este sigură și trebuie să adăugați o directivă doar o singură dată.

Blocarea fișierelor se face prin adăugarea unei directive în .htaccess astfel:

    <files nume-fisier.extensie>
         order allow,deny
         deny from all
    </files>

Deci, pentru a bloca readme.html, faceți astfel:

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

Faceți același lucru cu fișierul de licență sau orice alt fișier la care doriți să împiedicați accesul. Deschideți .htaccess în Notepad sau orice alt editor de text simplu, adăugați directivele și salvați, asigurându-vă că editorul de text păstrează exact numele fișierului - fără adăugarea .txt la final.

15 mai 2011 15:22:53
Comentarii

Aceasta este de fapt opțiunea pe care am ales-o în final. Funcționează perfect.

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

Atenție, sintaxa de mai sus este valabilă doar până la Apache 2.2! După aceea, pentru Apache 2.4 și versiuni superioare, folosiți Require all denied (înlocuind acele 2 linii interioare). Mai multe detalii aici

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

Iată propunerea mea:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (nu există) în loc de 403 (interzis) pentru a evita orice indiciu privind existența fișierelor.
  • se aplică și în subdirectoare (de ex. teme și plugin-uri, care ar putea oferi oportunități de atac)
  • nu ține cont de majuscule/minuscule, extensii flexibile, prinde și README.html sau license.html (puteți adăuga alte tipuri de fișiere precum changelogs|faq|contributing)

Personal, aș bloca și:

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

Notă:

  • '?:' declară doar că paranteza nu este de potrivire (fără importanță).
  • necesită ca RewriteEngine să fie on (cel mai probabil este. ar fi neobișnuit să folosești WordPress fără... (permalink-uri urâte, etc.)).
  • introduceți înainte de secțiunea # BEGIN WordPress din fișierul .htaccess
6 sept. 2015 09:44:36
Comentarii

Există vreun avantaj în utilizarea RewriteRule în loc de FilesMatch?

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

Editare: poți încerca și aceste variante

add_action('upgrader_pre_install','functia_mea_pentru_stergerea_fisierelor');
add_action('upgrader_post_install','functia_mea_pentru_stergerea_fisierelor');
15 dec. 2010 12:37:46
Comentarii

Mulțumesc, am descoperit funcția php unlink și funcționează, dar apare o problemă. Hook-ul pe care l-ai oferit pare să se execute doar prin vizitarea secțiunii Updates din Dashboard. Există alt hook pentru momentul de după actualizare?

Sahas Katta Sahas Katta
15 dec. 2010 22:16:31

o să verific și îți spun

Atif Atif
16 dec. 2010 12:23:40

@Sahas @atif089 Ați reușit să faceți asta să funcționeze?

INT INT
12 mai 2011 13:38:20

În loc să ștergeți (în caz că doriți să citiți efectiv fișierul readme!) puteți folosi această funcție în codul dumneavoastră: chmod("/path/to/readme.txt", 0640);

Bysander Bysander
10 oct. 2016 15:07:38
0

Soluția pentru 2023

Dacă folosești Apache, în prezent pe versiunea 2.4.5x, ca server web și dorești să utilizezi calea ".htaccess", atunci iată câteva opțiuni (în plus față de răspunsul lui Frank) pentru a face acest lucru:

Returnarea mesajului "Forbidden" utilizatorului:

În acest caz, "utilizatorul"/"hackerul"/"adversarul"/"pentesterul" va afla că aceste fișiere există pe serverul tău, dar nu are acces la ele!

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

Returnarea erorii "404" utilizatorului:

În acest caz, "utilizatorul"/"hackerul"/"adversarul"/"pentesterul", teoretic, va presupune că aceste fișiere nici măcar nu există pe serverul tău!

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

Soluție Actuală WordPress, Actualizată 2025

Combin răspunsurile/comentariile anterioare și le aplic la întrebarea actuală (precum și abordând preocupările legate de securitate din răspunsurile anterioare).

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

Folosirea index.php [L] va direcționa totul către WordPress ca pagină 404 a site-ului WordPress, în loc să afișeze pagina de eroare 403/404/etc a serverului web. Făcând acest lucru, potențialul hacker nu va observa schimbarea paginii de eroare afișate.

30 mar. 2025 20:25:50