Zabezpieczenie strony na WordPress

Dodanie automatycznych aktualizacji

Tworzymy plik /wp-content/mu-plugins/update.php

Plik tak zapisany uruchomi się niezależnie od wybranego tematu czy innych włączonych pluginów. W nim wprowadzamy kod:

add_filter('auto_update_plugin', '__return_true' );
add_filter('auto_update_theme', '__return_true' );
add_filter('auto_update_translation', '__return_true' );

Zabezpieczenie dostępu do ważnych plików

W pliku .htaccess zamieszczamy wpis:

<Files .htaccess wp-config.php wp-main.php>
order allow,deny
deny from all
</Files>

Umieszczenie danych dostępowych do bazy danych w osobnym pliku

Na serwerze tworzymy dowolny plik php np wp-main.php i w pliku wp-config.php dajemy do niego odwołanie:

require_once 'wp-main.php';

do pliku wp-main.php wprowadzamy wszystkie dane dotyczące dostępu do bazy danych a dostęp do niego ograniczamy w pliku .htaccess

/** The name of the database for WordPress */
define( 'DB_NAME', 'db_username' );

/** MySQL database username */
define( 'DB_USER', 'db_username' );

/** MySQL database password */
define( 'DB_PASSWORD', 'db_password' );

/** MySQL hostname */
define( 'DB_HOST', 'localhost' );

/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );

/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );

Wyłączanie edytora plików

W pliku wp-config.php dodajemy kod, który wyłączy możliwość edycji plików tematu z poziomu panelu administratora strony przez Wygląd > Edytor

define(‚DISALLOW_FILE_EDIT’, true);

Zabezpieczenie plików

W pliku .htaccess ustawiamy:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ – [F,L]
RewriteRule !^wp-includes/ – [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ – [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php – [F,L]
RewriteRule ^wp-includes/theme-compat/ – [F,L]
</IfModule>

Blokada wykonywania plików PHP wysyłanych przez formularz
Pliki zamieszczone jako załącznik do formularza trafiają do katalogu wp-content/uploads/ warto w nim zamieścić plik .htaccess a w nim zablokować wykonywanie tych plików:

<Files *.php>
deny from all
</Files>

Zabezpieczenie przed Code injection

W głównym pliku .htaccess umieszczamy:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]