Yesterday I have noticed that a blog (another-blogger.com) that I am visiting get hacked so I tooth to look on the net for new ways to protect my blog. Below are some good steps to to stop your WordPress blog getting hacked:
Removing Footprints – Stop Hackers Finding You
1 – Remove the Footer Credit – Most WordPress templates will come with a link back to WordPress in the footer saying, “Powered by WordPress”. If you don’t want to get hacked, this absolutely has to go. It is used as a marker by hackers who query search engines to compile lists of WordPress sites. This is known as dorking; implying that people who leave such footprints on their sites are dorks. Removing this will probably stop you from getting hacked as your site will probably not be found once it is removed. If you would like to give credit to WordPress for making a free publishing platform in some other way, you could link to them on your about page.
To remove the footer credit, open up wp-content/{name of the theme you are using}/footer.php and delete the link to WordPress.
2 – Remove the Meta Generator Tag – Most WordPress templates will also come with a HTML tag in the head like this:
<meta name="generator" content="WordPress 2.7" />
This has to go too as it gives away what version of WordPress you are using. All a hacker would have to do is look up a hack for your version of WordPress and if you are vulnerable (some vulnerabilities require certain server settings or environments) they will take you down.
To remove the meta generator, open up wp-content/{name of the theme you are using}/header.php and delete the meta generator tag.
3 – Remove the Generator Tag in the RSS Feed – WordPress also gives away which version you are using in the RSS feed with a generator tag like this:
<generator>http://wordpress.org/?v=2.7</generator>
Again, this gives away the version you are using so is particularly dangerous. RSS feeds are another way in which hackers compile lists of sites which they might be able to attack.
To remove the RSS generator, open up wp-includes/general-template.php and search for the function called the_generator (around line 1858). It will look like this:
- function the_generator( $type ) {
- echo apply_filters(‘the_generator’, get_the_generator($type), $type) . ”n”;
- }
and place a hash (#) in front of the word echo, so it looks like this:
- function the_generator( $type ) {
- #echo apply_filters(‘the_generator’, get_the_generator($type), $type) . ”n”;
- }
4 – Remove Other Footprints – There are a number of other ways that someone might be able to tell that your site runs on WordPress, such as installing it at, http://domain.tld/wordpress/ and if you have links to specific WordPress files names, such as wp-login.php. The later can easily be found using a search engine, e.g. WordPress Logins
Two file names that are visible on all WordPress installs will be the the wp-content/ directory (where WordPress stores media) and the wp-comments-post.php. You can change the name of the wp-content directory in the WordPress admin under settings > miscellaneous. To change the wp-comments-post.php, you will need to edit your template to use a different URL and forward the new URL to wp-comments-post.php. It is unlikely anyone uses these methods to find WordPress blogs to hack, but they are considerations you can take if you want to be extra careful.
Also make sure you have deleted the licence.txt and readme.html in the root directory.
Locking Your Install Down
5 – Disabling Indexes – Disabling indexes means that when someone navigates to a directory on your server, it will not give them an output of the folders and files in that directory. This is particularly important as a number of WordPress hacks target vulnerabilities in plugins. So if your wp-content/plugins/ directory is browsable, you are going to be giving away what plugins you are using. This may be used to target sites that use a particular plugin or if you have enemies someone might use it to find a vulnerability specific to one of your plugins. Due to lack of security, many sites have their plugins directory indexed: Plugin directories
If you are using Apache as a web server (the most popular choice) you can disable indexes by adding one line to .htaccess in the root of your WordPress install – that is the main directory with index.php in it. Simply add Options -Indexes anywhere in the .htaccess file. If you ever need to enable indexes in a directory, all you need to do is add Options Indexes to a .htaccess file in that directory. For those who are not using Apache, other options will be available for your sever. Alternatively, if you are partial to botches, you can put an index.html file in all directories you don’t want people to be able to browse. So, when someone loads a directory, they will just be shown the index.html.
6 – Blocking Server-side Directories – Blocking directories that contain files that are only needed by your server is an essential aspect of any site’s security. There are a few reasons for this, including:
- If your server has a problem with PHP (like if someone removes the Apache PHP module), your server may start outputting PHP files literally
- Some text editors will create backup files like, index.phps or index.php~. These can be uploaded to the server, accessed by undesirables; giving away your database credentials. These files can get indexed by search engines for easy targeting.
- There are also ways in which someone can detect what platform you are using if the platform uses unique directory names, as WordPress does.
Due to WordPress’ architecture, it is not possible to block all directories that should to be blocked. The main directory to block is wp-includes/. You can do this by adding the following line to .htaccess:
RewriteRule ^(wp-includes)/.*$ ./ [NC,R=301,L]
To block further directories, separate each directory with a pipe like so:
RewriteRule ^(wp-includes|another-dir)/.*$ ./ [NC,R=301,L]
7 – Hiding the Admin – Securing the administration is important as it is an easy place where your username and password can be yoinked. First of all, you will want to put the admin on an encrypted connection (SSL). If you have cPanel, I believe this can be setup from there. If you do not know how to do this you will need to get someone to do it for you or ask your hosting company. Using a secure connection for your admin is important because without it your login credentials will be banded around the internet as plain text. They will also be stored in your server’s log files as plain text – not good if a malicious individual or a disgruntled server admin gets access to your server.
Renaming the admin directory is also a good idea. By default it is wp-admin/. However, this isn’t an easy job for those who do not have a decent understanding of PHP. Alternatively, you can password protect the directory. This can be done from cPanel.
8 – Move the Config Data – As mentioned above, some text editors will make backups of your PHP files which can be opened by anyone, or if you have server problems your PHP files could be output as text. This opens up the problem of someone opening up your wp-config.php file and snafing your database credentials. The best thing to do is:
- Copy the contents of wp-config.php
- Create a new file in a directory (e.g. wp-includes/conf.php) and paste the contents into it
- Require the location of the new config location. This will look something like:
- <?php
- require_once( ’wp-includes/conf.php’ );
- ?>
- Save the new wp-config.php
It is essential that your new config file is in a directory that you have blocked from outside access using the method in point 6. Otherwise, you will just be telling people where you have moved your config.
A search on Google shows a number of sites with their database credentials ripe for the picking: sitting ducks
9 – Database Encoding – In wp-config.php, you are able to select your database encoding. It is advisable to use UTF-8 as other character sets are vulnerable to SQL injection since WordPress doesn’t use multi-byte character escaping.
10 – File Permissions – Use the below file permission for optimal file system security:
| Directory | Permission |
|---|---|
| ./ | 755 |
| wp-admin/ | 755 |
| wp-content/ | 755 |
| wp-includes/ | 555 |
WordPress Trojan Horses
11- Themes and Plugins - Last but not least, you can run into serious trouble by installing plugins and using themes without checking them for malicious code. If you don’t know PHP, I’d recommend only installing plugins and themes which are listed in the official WordPress directories as I’d image those are veted for nasties. Although with plugins like pennispress getting into the official directories, it is difficult to know who to trust these days ![]()


I’ve already done most of them but I didn’t know about the RSS feed generator, so I just #’ed that line, hoping I can feel more safe now
Thanks!
Klaus @ TechPatio last post ..HDR photo examples with iPhone 4 and iOS 41
I have been looking for information like this for awhile. I never understood how someone could hack into wordpress. It was one of those things where I don’t known what I don’t know.
Do you think that their will ever be a wordpress version that isn’t hacker proof?
-Eric
Eric from Cincinnati SEO blog last post ..What’s the Best Type of Traffic to Your Website
I think that nothing is 100% full proof, depending on the measure that you take you minimize the risk of beeing hacked.
Thanks. yeah I kind of figured that.
I guess I can figure this out on my own but each time you update to a newer wordpress version, does the meta generator tag stay removed or is it re-included?
Eric from Cincinnati SEO last post ..Internet Marketing Presence Builds More Presence
Thanks for your info, I remove it from my blogs now. Hope it could stop some hackers .
Hello Bitdoze,
I just stumbled across this and, Because of the number of ways one can follow for increasing inbound links, the website owners never really know what things should be done or what not. However, following and analyzing the progress of the competitive websites is the first thing that should be done. Know more about inbound links with a good link building software. If you get an idea of which links are pointing to your competition?s website then similar approach or different approach can be tried. This way forward can only be acquired if you know what the other person is doing and that is always through analysis and research.
One good way to know about their inbound links is by typing their address on Yahoo Site Explorers. This website provides information on the links that are pointing to the entered website. You can even contact the websites in competition of the links to increase your inbound links or anything else but always account on quality research.
Nice One!
thanks for the tips , didn’t know all these can be the reasons to get virus , one of my site got virus and Google de indexed the whole site and its been 2months i don’t see the site on Google.
nyways nice blog dude , came from bloggers so thought would leave a comment.
seoallrounder last post ..Get $40 back when getting a new hosting account! Better than coupons