Spousta útoků, které útočník může použít jsou útoky na databázi. Pojďme jim to trochu znepříjemnit.
Útoky pomocí SQL injekce jsou samozřejmě běžné i mimo WordPress. Vzhledem k tomu, že je WordPress velice rozšířený a řada uživatelů zapomíná a nebo vůbec neví o takovéto možnosti, tak nechávají tabulky v původní struktuře s původními názvy.
Defaultně se tabulky do databáze zapisují s prefixem(předponou) wp_ poté vypadají například takto:
Nejsnadnějším způsobem, jak chránit WordPress přes SQL injekcí je právě změna prefixu databáze.
Údaje o prefixu databáze je uložena v souboru wp-config.php
1 |
$table_prefix='wp_'; |
Změna prefixu databáze
Před samotnou změnou doporučujeme udělat zálohu aktuální databáze a souboru wp-config.php
Prefix databáze může být jakýkoliv. Např. hudba_, mujWeb_, xyz_ apod.
Změníme tedy prefix databáze v souboru wp-config.php
1 |
$table_prefix='mujBlog_'; |
Nyní je potřeba přejmenovat i všechny tabulky v databázi. Můžeme k tomu využít například phpMyAdmin.
Postačí nám jednoduchý SQL dotaz ve tvaru:
1 2 3 4 5 6 7 8 9 10 11 12 |
RENAME table `wp_commentmeta` TO `mujBlog_commentmeta`; RENAME table `wp_comments` TO `mujBlog_comments`; RENAME table `wp_links` TO `mujBlog_links`; RENAME table `wp_options` TO `mujBlog_options`; RENAME table `wp_postmeta` TO `mujBlog_postmeta`; RENAME table `wp_posts` TO `mujBlog_posts`; RENAME table `wp_terms` TO `mujBlog_terms`; RENAME table `wp_termmeta` TO `mujBlog_termmeta`; RENAME table `wp_term_relationships` TO `mujBlog_term_relationships`; RENAME table `wp_term_taxonomy` TO `mujBlog_term_taxonomy`; RENAME table `wp_usermeta` TO `mujBlog_usermeta`; RENAME table `wp_users` TO `mujBlog_users`; |
Pokud máte v databázi ještě další tabulky (například tabulky, které si vytvoří plugin po instalaci apod), tak je potřeba je přejmenovat stejným způsobem.
V případě, že používáte na úpravu databáze phpMyAdmin, tak ten umí rovnou změnit prefix databáze u všech tabulek viz.:
Úprava tabulek _options a _usermeta
Informace o prefixu jsou ještě zaneseny v tabulkách _options a _usermeta – pro nás nově v mujBlog_options a mujBlog_usermeta
Vyhledat je můžeme buďto manuálně a nebo SQL dotazem:
1 |
SELECT * FROM `mujBlog_options` WHERE `option_name` LIKE '%wp_%'; |
a
1 |
SELECT * FROM `mujBlog_usermeta` WHERE `meta_key` LIKE '%wp_%'; |
Použití pluginu
Prefix databáze jak v souboru wp-config.php, tak i v databázi můžete snadno změnit pomocí pluginu Brozzme DB Prefixpo po změně můžete plugin odinstalovat, protože jej už nebudete potřebovat.