Zapobiegaj dostępowi lub automatycznemu usuwaniu pliku readme.html, license.txt, wp-config-sample.php

13

Krótkie pytanie, które może trochę pomóc w bezpieczeństwie. Zauważyłem, że plik readme.html ma wymieniony numer wersji. Ponownie pojawia się po każdej aktualizacji, podobnie jak licence.txt i wp-config-sample.php.

Czy istnieje prosty sposób, aby WordPress automatycznie usuwał te pliki po aktualizacji?

Już blokuję wyświetlanie numeru wersji w metatagach, kanałach RSS, atomie itp.

Wiem, że tego typu zabezpieczenia nie jest dokładnie to, że znacznie pomocne, ale po prostu, że może to być mały początek. Słyszałem, że ludzie mogą po prostu sprawdzić wersję jQuery zawartą w WP-obejmuje i sprawdzić, która wersja WP ją dostarczyła.

Sahas Katta
źródło

Odpowiedzi:

19

Naprawdę nie musisz usuwać tych plików. O wiele łatwiej jest po prostu zablokować dostęp do nich. Jeśli używasz ładnych adresów URL, masz już plik .htaccess. Używanie .htaccess do blokowania plików jest bezpieczne i wystarczy tylko raz dodać dyrektywę.

Blokowanie plików odbywa się poprzez dodanie dyrektywy do .htaccess w następujący sposób:

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

Aby zablokować plik readme.html, wykonaj następujące czynności:

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

Zrób to samo z plikiem licencji lub innym plikiem, który chcesz uniemożliwić komukolwiek dostęp. Wystarczy otworzyć plik .htaccess w Notatniku lub innym podstawowym edytorze tekstu, dodać dyrektywy i zapisać, upewniając się, że edytor tekstu zachowa dokładnie nazwę pliku - bez żadnego .txt na końcu.

Elpie
źródło
1
Jest to właściwie opcja, z którą ostatecznie skorzystałem. Działa idealnie.
Sahas Katta
1
Uwaga , powyższa składnia obowiązuje tylko do wersji Apache 2.2! Następnie użyj Require all denied(zamieniając te 2 wewnętrzne linie) dla Apache 2.4 i nowszych. Więcej szczegółów tutaj
Frank Nocke
5

Oto moje zdanie:

RewriteRule (?:readme|license|changelog|-config|-sample)\.(?:php|md|txt|html?) - [R=404,NC,L]
  • 404 (nie istnieje) zamiast 403 (zabronione), aby uniknąć jakichkolwiek wskazówek dotyczących istnienia.
  • także w podfolderach (tj. motywach i wtyczkach, które mogą oferować możliwości ataku)
  • bez rozróżniania wielkości liter, elastyczna dla rozszerzeń, również przechwytuje README.html lub licence.html (zachęcamy do dodawania typowych podejrzanych, takich jak dzienniki zmian | faq | przyczynianie się)

Osobiście chciałbym również zablokować:

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

Uwaga:

  • „?:” po prostu deklaruje, że nawias jest niezgodny (bez znaczenia).
  • wymaga RewriteEngine on(najprawdopodobniej jest to. Rzadkie byłoby używanie wordpress bez ... (brzydkie bezpośrednie linki itp.)).
  • wstawić przed tym # BEGIN WordPressodcinku w swojej .htaccess
Frank Nocke
źródło
3
add_action('core_upgrade_preamble','my_function_to_delete_files');

Edycja: możesz także spróbować

add_action('upgrader_pre_install','my_function_to_delete_files');
add_action('upgrader_post_install','my_function_to_delete_files');
Atif Mohammed Ameenuddin
źródło
Dzięki, wymyśliłem funkcję php unlink i działa, ale jeden problem. Podany hak wydaje się wykonywać, po prostu odwiedzając sekcję Aktualizacje w Panelu. Czy po aktualizacji pojawi się kolejny haczyk?
Sahas Katta,
1
źle spojrzeć i poinformować
Atif Mohammed Ameenuddin
@Sahas @ atif089 Czy udało ci się to uruchomić?
INT
Zamiast usuwać (na wypadek, gdybyś chciał przeczytać chmod("/path/to/readme.txt", 0640);
plik