1. Keeping Up to Date
Like any software, WordPress is constantly being improved—more features, more efficient code, increased security, and so on—as are themes and plugins. Not having an up-to-date WordPress installation is a common cause of malfunctions and one of the key reasons sites get hacked. You must keep everything up to date. Fortunately, updating is a simple task. In addi- tion to that, you can maintain your WordPress site to keep it running smoothly in other ways.
1.1. Updating WordPress
Following are two types of updates for WordPress:
- Automatic minor updates, for example, 4.0 to 4.0.1
- Major version manual updates, for example, 3.9 to 4.0
The minor updates are for security and minor functionality fixes, whereas the major version updates have key new features, along with some security fixes. As the name suggests, the automatic updates occur without any need for action on your part.
WordPress is clear about the availability of major updates or minor updates that for various reasons cannot be automatically applied. A warning message with a link to perform the update displays at the top of every admin screen until the update is completed, as shown in Figure 32-1.
If you’re logged in as any role other than Administrator, the message tells you to notify your administrator of the update. Also, an Update button appears on the Dashboard if there’s an update available—displayed next to the name of the version you’re running.
For automated updates, the administrative e-mail is sent a notification that the update has taken place.
1.1.1. Automated Updates
At one time, all updates for WordPress had to be done manually, but to make life easier for users and to ensure that minor updates were applied, because they often involve security fixes, it decided to automate non-major updates.
It was also possible to automate these updates between major new releases because they rarely involve changes that could affect plugins or themes. Nevertheless, you always need a regular backup routine in place just in case something negative happens because of any update.
Although WordPress has tried to make its automated updates work on as many server configura- tions as possible, there may be some situations in which they do not work. In that case, your admin screen can show a message saying an update is available and you need to do it manually.
You can also turn off automatic updates if you prefer to do them manually. Some plugins for that purpose are mentioned at the end of the lesson.
1.1.2. Major Version Updates
When WordPress undergoes significant changes, the update is not automatically applied, but the process is still extremely simple: You press a button.
The trick is to do a full backup of your files and your database prior to pressing the button, and WordPress reminds you of this. Unless your regular backup routine happens to have fallen on the day of the update, you should do a special backup so that you have a snapshot of your site at the moment before the update.
The reason for the caution is that there is a slight chance of something going wrong during a major update. Out of literally thousands of updates to hundreds of site clients over 7 years, I can count on one hand the number of times I’ve had to revert to a backup.
1.1.3. Completely Manual Update
There can be situations in which pressing the Update button does not work, but you’ll know this already because you also won’t be able to upload media files without having to enter your hosting account information.
If your hosting company won’t fix this problem with file ownership and you haven’t bothered to find a new hosting company that will, then you have to do a fully manual update of WordPress.
There isn’t enough room here to go into the details of a manual update because there are a lot of variables. WordPress.org has a handy three-step manual updating process (http://codex.wordpress.org/Upgrading_WordPress), but even with that, it warns you that you may need even more details on its extended upgrade instructions page (http://codex.wordpress.org/ Upgrading_WordPress_Extended).
1.1.4. Troubleshooting WordPress Updates
As mentioned, it’s rare for there to be problems even during major updates, but if you do encounter them, they fall into three main groups:
- WordPress loads but has error messages; weird characters appear at the top of the screen; or certain functions aren’t working.
- Your screen is white except for an error message.
- Your screen is completely blank (white screen of death).
In most of these cases, a plugin is clashing with WordPress. What you should do depends on the state of your screen.
If you can access the WordPress admin screen, the first thing to do is deactivate all your plugins. If you don’t have a lot of them, you can try re-activating them one at a time until you find the culprit.
If you have a lot of plugins, first try activating one-half of them. If you’re still running fine, activate the other one-half. When you know which half caused the problem, you can start deactivating that half one at a time until the site works properly.
If you can’t access the admin screen, but you have an error message, there may be a clue in that message as to which plugin is causing the problem. In that case, you can use an FTP program to go into your plugins directory and change the name of the plugin’s folder. That will cause it to deactivate, and when you refresh the WordPress admin screen, it should be up and running.
However, often the error message relates only to a symptom and not the cause of the problem. In other words, the file mentioned in the error message is one that’s not working because of a problem somewhere else. Fortunately, if the error message doesn’t help or you have a completely blank screen, the process of checking plugins previously described can be done through your FTP program.
Through your FTP program, rename your plugin directory to something such as plugins-old, which has the effect of deactivating all the plugins. You should now have access to the backend of WordPress. Next, you create a new directory called plugins. Then, one at a time you drag a plugin’s folder from one directory to the other until you find the problem plugin.
Whenever you find a broken plugin, simply leave it deactivated while you research what’s happening. Check the plugin’s page on the WordPress Plugin Directory to see if others are having the same issue. It may be a matter of waiting for the author to come up with a fix, or it could be there’s a conflict with an update in another plugin.
If you purchased the plugin, e-mail the company and explain what happened, what version of WordPress you’re running, what version of PHP your server uses, and what other plugins you have.
If it’s vital to have that plugin working immediately, you could consider using a different plugin. Or if that’s not an option, it may be that the previous version will continue to work. You can get earlier versions from the Developer link on the plugins page in the WordPress directory, or if you have a paid plugin, you should have the earlier version on your hard drive. Try reinstalling and see if that works.
1.1.5. WordPress Cleanup
In addition to keeping WordPress up to date, some maintenance tasks can be useful to perform from time to time, depending on the size and activity of your site. Some of the key tasks are described here, and you can find lists of plugins at the end of the lesson, which can help you with each of them:
- Revision Cleanup: By default, WordPress keeps all revisions you make to Posts or Pages. Many of these, particularly as time moves on, probably are not worth There are plugins that can help you clear out old revisions in bulk or change the revision function, so WordPress keeps only the last four or whatever number of revisions you choose.
- Media cleanup: Between uploading different versions of files or uploading ones you never end up using, your media library (and hence your server) can become unnecessarily bloated. Coupled with the multiple images that WordPress creates for each one you upload (and this could be a dozen or more depending on the theme and plugins you use), you can see how stuffed your server can become. Deleting unneeded media files can be a huge help. There are plugins that can make the process easier by tracking down whether a file is used anywhere.
- Trash cleanup: By default, WordPress clears out files in the Trash area 30 days after they’ve been placed there. However, it can be good to go through it after you’ve done any major house cleaning and delete them right away.
- Database Repair: Over time, databases can become filled with unnecessary data, or table information can become corrupted. This can slow down your site. But there are plugins that can help without having to know anything about
Your website is like a big closet. Easy to stuff with lots of unneeded items—and just as easy to keep clean with a bit of effort.
1.2. Updating Plugins
When plugins require updating, the most visible notice from any screen in the admin area is a tiny graphic displayed next to the Plugins link on the main admin menu, as shown in Figure 32-2.
The number in the circle tells you how many plugins need updating. The admin toolbar also has an update indicator showing total Plugins and Themes needing an update.
Figure 32-2 also shows the Plugins page—plugins needing updating have a color-coded highlight and a notice about a new version. You can also view only the plugins that need updating by clicking the Update Available link on the text menu at the top of the Plugins screen.
Following are two ways to do the actual updating of plugins:
- From the Plugins page you can click the Update Now link for an individual plugin or use the Bulk Action function to update several at once.
- From the Dashboard Updates link on the main admin menu, choose one or more plugins, and click the Update Plugins button.
If you ever experience a problem after updating a plugin, see the section “Troubleshooting WordPress Updates,” earlier in this lesson.
Over time, you may accumulate plugins that have been deactivated and are no longer used. It’s important to delete these.
Even if plugins are not activated, WordPress has to process them to a certain extent for listing on the Plugins page. It may not be much for each plugin, but if you have 10, 20, or more plugins you’re not using, you might as well delete them.
There’s also a security issue involved here. As long as a plugin remains installed, its files are sitting on your server. If a security flaw is discovered by hackers, those files could be used by them to cause problems, despite the plugin not being active.
Remember, plugins are easily reinstalled at any time, whether from the WordPress Plugin Directory or a paid plugin, which you’ll have a copy of on your hard drive (right?).
1.3. Updating Themes
Like plugins, themes may need updating for various reasons. It could be that they have a special functionality that relied on something in WordPress that has now changed. Or the new version of the theme takes advantage of new features in WordPress. In either case, you need to perform an update.
Theme updates are included in the number that appears beside Dashboard Updates on the main admin menu. That’s why after having updated all your plugins, you may still see a number listed.
You can do theme updates from the Updates page, just as with Plugins, or from the theme library where you can see a clear notification on the theme’s thumbnail, as shown in Figure 32-3.
Some premium or commercial themes may have their own methods for updating. Following are some examples:
- Log in to the company website, download the new version as a zip file, install it through the WordPress theme upload function, and delete the old version.
- Log in to the company website, download the new version, manually upload the folder via FTP, and overwrite the old version.
- Load a special plugin that handles the updating.
In any case, you should receive some sort of notification, perhaps through the WordPress Updates area of the menu, with instructions on how to perform the update.
Just as with plugins, it’s not good to keep more than a few themes in your theme library at any one time. In particular, there can be security issues with outdated themes.
Some automated WordPress installers include dozens and dozens of themes from the WordPress.org site. There’s no good reason for this, when it’s so simple to preview and then install a theme at any time. Get rid of all these extra themes.
Or if you’re working on a site redesign and you’ve been loading several possible themes, make sure you delete them after you’ve made your choice.
2. Keeping Backups
Back up or die. It should already be your mantra for your home devices; now do the same for your website. Without a backup of your data, you face disaster if something happens; it rarely does, but the key word is “rarely.” Because it’s even remotely possible for your server to crash or a hacker to mess up your files, you must keep backups.
And for backing up WordPress, there is only one course of action: Automate your backups. I’ve tried many different ways over the years to educate clients and readers about how to back up WordPress, how often to do it, and how to get into a routine of doing backups. Almost without exception, it doesn’t happen. We get busy, we forget, we get intimidated by the process; whatever the cause, people do not take the time to back up their sites.
The good news is that it has become so easy to do automated backups with free and paid plugins, or third-party services, that there’s no point in even trying to develop a manual backup routine. Whatever method you use, make it an automated one that’s easy to restore.
2.1. The Elements Of Backing Up
After being blunt about the “why” of doing backups, I’ll now briefly consider the what, where, when, and who, followed by some details on the how.
2.1.1. What to Back Up
Following are two elements to a WordPress backup:
- Site files (WordPress, themes, plugins, and your media files)
- Site database (settings and all your text content)
You need to understand that these are completely separate on the server and require differ- ent methods of backing up. Check that a plugin is doing both, or understand which plugin is doing what, so that you’re covering the other backup by some other means.
2.1.2. Where to Keep Backups
The golden rule of backing up, whether for your home devices or website, is to store the backup somewhere else. Even better is to have two backups, each in a different location. I remember years ago storing a backup hard drive for my computer at my parent’s place. Luckily I never had to wake them in the middle of the night to access my data. These days there are better options.
When you’re looking into backup options for your WordPress site, you need to make sure the backup is not being stored on your server. The whole point of the backup is to restore it if something happens to your server.
One solution is to get a hosting account with a different host and store your backups on that account. An advantage of this method is that if your current site crashes and you decide it’s time to switch hosts, your files are already at the new location, speeding up the switchover.
The cloud is a popular choice for backups these days, because it’s somewhere other than your server and services like Amazon S3, Google Drive, Dropox and many others are usually very cost effective. If you have a large site, storing even just a few backup versions can add up, so you want a low-cost storage solution.
Another location for backup storage, depending on the size of your site, is an e-mail account such as Gmail with plenty of storage. If you’re backing up your database separately from your site files, this can be an ideal method for storing the database file, which is typically quite small when zipped up.
And, of course, storing a copy of your website on an external hard drive is another simple and cost-effective solution. Notice I didn’t say “stored on your computer’s hard drive,” because you won’t want to be worrying about computer crashes just when you need to restore a backup.
The ideal scenario: one backup in the cloud and another on an external hard drive. Whatever the plan, make sure you choose a plugin or service that can handle it.
2.1.3. When to Do Backups
How often should you do a backup? As often as necessary.
I don’t say that to be funny or cryptic. It simply means that the frequency of backups will vary for different sites or for the same site over time.
For example, say you spend 3 weeks getting ready to launch your site. You should set your backup for every day or even twice a day depending on how much you’re doing each day. A weekly backup would miss a lot of material. After the site is launched and you’re adding a new Post once a week, say, then a weekly backup would be reasonable.
2.1.4. Who Should Do Backups?
Everyone. Whether you run a personal blog, a site for your soccer team, or an online store, you need backups. Your content is valuable and you need to protect it. Besides, backup solutions cost nothing or very little, and when they’re automated they don’t require your time.
Following are some excuses I’ve heard for not backing up, all of which are just wrong:
- I have a very reliable host.
- I update my content only a couple of times a year (!).
- I have all my original Word docs and images on my hard drive.
These people are delusional: Accidents happen to any host. Even if your content isn’t changing, WordPress and plugins are, and the point of a backup is so that you don’t have to reconstruct your crashed site from scratch.
2.1.5. How to Do Backups
The two choices previously mentioned were: plugins or third-party services. Now we’ll consider the latter, and end with plugins in general. Then a list of some plugins is provided.
Third-Party Backup Services
Although you may store your backups with a third party, such as Amazon S3 or Dropbox, this section discusses third parties that actually handle the backup software as well as the storage.
Your hosting company is actually a backup service you should consider first because it already takes care of your website files. However, you need to keep the following in mind: Do not rely on your hosting company’s default backup system.
Most hosting companies regularly make backups of their servers, but those are rarely kept longer than the next backup, and these are typically images of the entire server. For them to extract your particular site’s data is not worth their time. And if you read the fine print of most hosting companies, they do not guarantee a backup of your files.
Currently, more and more hosting companies advertise individual site backups as part of certain hosting plans. So it’s definitely worth looking into what your hosting package includes.
Most hosting companies do offer a backup service for an additional fee, but here’s an important question to ask: Where do they store the backups? If it’s on your hosting account or even on the same server where your account is located, that’s a problem. If the entire server goes down, not only is your site inaccessible, but also are your backups.
In addition to your hosting company, you can also check with other hosting companies to see if they have accounts for backing up sites. That way your backups are stored on a completely different server system, and if you need to switch hosting companies, you’re already set up with one.
Another type of third-party backup service is one such as VaultPress, which is run by the folks who make WordPress. Many other backup services are available, such as blogVault, Codeguard, BackBlaze, and DropMySite; search for website backup services.
Free and Paid Plugins
With the advent of the cloud and inexpensive hard-drive storage, along with the development of sophisticated automated plugins, you don’t need a third-party service to get great backup protection.
Some plugins back up only the WordPress database. You do not want these plugins. If there were plugins that just automated the backing up of site files, then I might say, get both plugins, but there aren’t any files-only backup plugins that I know of. Even if there are, I know from experience that average site owners are not going to manually do FTP backups of site files every time they get an e-mail saying their database has been automatically backed up.
Don’t set yourself up to fail: Just get a plugin that backs up both your files and your database.
What about plugins for moving websites? Although these do create complete copies of your database and files, their primary purpose is to take a snapshot of a site and re-create it immediately on a subdomain or elsewhere. If the plugin has the capability to schedule automated copying, it might work for backups.
Some plugins do full automated backups but do not have the capability to tie into cloud or other storage services, such as Amazon S3 or Google Drive. For some people, this could work, but in my experience, the average website owner would benefit from the simplicity of a paid storage service.
For example, consider home data storage. For years there have been ways to link all your home devices to a central data storage location, whether on one of those devices or a stand-alone network drive. Yet how widespread has this practice actually become? Not very. But along comes cloud storage with a simple set up, and you hear grandmothers talking about backing up photos of the grandkids.
You should use an automated backup plugin that has the capability to tie into several different storage solutions.
Remember, if a plugin is saving only a full backup to your own hosting account, you’re responsible for downloading that backup so that it’s stored somewhere else (preferably two other places).
It’s one thing to have complete backups stored in safe locations, but if you can’t easily restore a backup, the value is lost to some extent. Yes, you can pay someone to do a restoration or maybe your hosting company can help, but for many people, the goal should be to have the same plugin do the restoration.
To sum up, following is the ideal backup plugin solution:
- Full backup of files and database
- Scheduled, automatic backups
- Storage to at least one location different from your server
- Simple restoration of backups
Although there are a couple free plugins that meet these requirements, you’re more likely going to need a paid plugin, including paid versions of some free plugins mentioned next.
3. Keeping Your Site Secure
Every piece of software on the Internet is threatened by hackers. Because of its tremendous popularity, WordPress is a regular target. The good news is that protecting yourself is not nearly as daunting as it might seem.
Two of the most important elements of WordPress security have previously been covered: staying up to date with all aspects of your site’s software, and having a backup if something happens.
This lesson shows you six additional steps you can take to increase the security of your WordPress installation. Although these are not exhaustive, if you do all or most of these steps, you’re much better off (sadly) than a great many users. Some other issues you need to be aware of in the constant effort to ward off hackers are also covered.
3.1. Six Steps To Greater WordPress Security
None of the following steps are difficult to do; the hard part is remembering to do them or getting in the habit of doing them.
3.1.1. Strong Passwords
Every security expert will tell you that weak passwords are the leading cause of software breaches. As you saw when first setting up WordPress, you need to pay attention to the password strength indicator and use only passwords that trigger a reading of Strong.
Following are the six criteria for a strong password:
- At least eight characters in length
- Some lowercase letters
- Some uppercase letters
- Some numbers
- Some characters such as #&!
- No actual words
And just so it’s driven home visually, following are some examples:
I know, you’re thinking to yourself the good password is hard to memorize, but that’s part of what makes it good. Use a password manager program to store these hard-to-memorize passwords.
While random is best, it is possible to have a password you can memorize yet is still pretty strong. Take a random phrase, such as “The 4 cats drive a Lexus through Dallas each morning at 9” and use the first letter of each word to create this password: T4cdaLtDema9. This is the minimum length for creating a password this way; the longer the better.
Randomness is crucial; don’t use a phrase from books, movies, songs, and so on. The more visually memorable the random phrase is to you, the easier it will be to remember.
And do not rely on substitution methods like this: p@ssw0rd, r@nd0miz3, and so on. Hackers easily incorporate these substitutions into the dictionaries they use.
Another approach is to memorize a random set of at least 6 symbols and numbers, such as “7%$9#4.” Then take a word of at least 6 letters and add two numbers at the end, such as “debate24.” The first number tells you which letter to capitalize and the second tells you the point at which to inject your random symbols and numbers, so the resulting password would be: dEba7%$9#4te. One of the advantages here is that you only memorize one thing, yet you can generate any number of passwords.
The hot topic in security these days is two-factor authentication, which means requiring two components for logging in. Typically, the components consist of something the user knows (a pin number) and something the user carries with them (a bank card).
Obviously, a physical component is not practical for things such as logging into WordPress, so a second piece of knowledge makes sense, but it needs to be knowledge accessible only by the user at the moment of login. If a temporary second password generated for that transaction could be transmitted to the user, that would be equivalent to possessing a physical object. Enter the mobile phone. A temporary password is simply texted to the phone.
The way it works is you have a plugin on WordPress which, when you sign in with your username and password, immediately triggers a code to be sent to the phone you’ve already registered. You have to enter this code before you can get into WordPress. At the end of this lesson some plugins that enable this kind of stronger login process are mentioned.
3.1.2. Use Reputable Themes and Plugins
Corrupted or unsecure themes and plugins are one of the leading causes of hackers worming their way into websites. And these themes and plugins tend to come from unreliable sources.
Free themes and plugins should be downloaded from one of only two places:
- A well-known commercial theme or plugin maker’s site
Go anywhere else and you could be leaving yourself open to problems. Ask yourself this: If it’s free, why isn’t it in the WordPress.org directories? Anyone can submit his work, which is then given a thorough check, not just for viruses and malware, but also for coding compliance and other standards.
Some commercial theme or plugin makers put free items on their sites to give you a taste of their work. If they’re reliable, that’s fine. This is particularly true of themes. If you’re not sure of the theme maker’s reputation, you can always run the theme through the Theme Check plugin, mentioned in Lesson 27, “Overview of WordPress Themes.” There are also plugins that scan all your site files for possible malware, as mentioned at the end of this lesson.
3.1.3. Do Not Use “Admin” for a Username
WordPress no longer automatically gives the first user on the system the username “admin.” However, many people continue to enter that as their choice when first installing WordPress. Don’t do it.
If you set up a security plugin that monitors access to your site, you would not believe how many people will try to get into your WordPress by entering “admin” as the username. These hackers know that eventually they’ll strike a site that’s using it, and then they’re part way toward getting in.
If you have an account with the username “admin” you need to get rid of it right now!
All you have to do is create a new administrator account with a username unique to yourself. Then log out and log in as the new user. Delete the “admin” account, assigning all its Posts to you.
3.1.4. Change the Database Preﬁx
When you install WordPress, you’re given the option of choosing the prefix for the names of the database tables. The default is wp_ but you can use any prefix you want.
Although I’m not completely convinced that this offers much protection, all installations have the same table names following the prefix—it’s an easy step when you’re installing WordPress, so you might as well do it.
You can protect yourself in a number of ways by keeping an eye on certain elements of WordPress. Regularly check your list of users. Filter for administrators and editors. Make sure there are no unknown users suddenly appearing, which could mean that hackers have set themselves up with control over your site and access to your files through the theme and plugin editors.
Delete temporary administrators. If you hire someone to work on your site, create a temporary administrator for the task, and when they’re through, erase it.
Delete the accounts or change the passwords of any former administrators, editors, or authors. And there are plugins which will automatically force current users to reset their password after a certain amount of time; see the end of the lesson for some examples.
Make sure no backups of your wp-config file exist. Neglectful developers may make a temporary backup of this crucial file. If they leave it on the server, it won’t be protected, and depending on how they saved it, it may be a plain text file. Figure 34-1 shows a backup of a config file exposed on the Internet and how easily it can be opened as a text file, revealing all the database login information:
By the way, I found this file (and thousands more like it) with a simple search using Google. Don’t make things this easy for hackers. And just so you know, these kinds of vulnerabilities have been pointed out on the Internet for more than a decade, so there’s no excuse for leaving backed-up copies of config files on the server.
You can look for these files on your hosting account using an FTP program or the File Manager of your hosting Control Panel. Look for things such as wp-config.txt or wp-config.php.bak. Any variation other than wp-config.php is vulnerable. Simply delete them, but, of course, don’t delete wp-config.php.
3.1.6. Limit Login Attempts
Hackers don’t actually have to break into WordPress to cause you problems. They could simply flood your login page with attempted logins. When I say flood, I mean hundreds or even thousands of attempts in a short period. On shared hosting, this can often have you shut down as the hosting company works to prevent the server from being overloaded and all other sites suffer.
There are plugins that limit how many times a single user can try to log in before being blocked; a few are mentioned at the end of the lesson.
3.2. Dealing With Sensitive Data
Some hackers just want to break in for the fun of it or to use WordPress as a tool for larger acts, but others are after data, such as personal or credit card information.
Following are two security elements relating to sensitive data:
Common solutions exist for both, in addition to specific steps you should take.
3.2.1. Collecting Sensitive Data
Suppose you have a form on your WordPress site where you need to collect data such as a person’s address, insurance policy number, or Social Security number. Unless the page containing the form is protected by secure browsing (an HT TPS in the URL), the data can be stolen as users enter the information.
With an SSL certificate for your site, you can use a WordPress plugin to designate that form page as HTTPS. Actually, you can make your entire site secure that way, including your administrative area.
The other important element in all this is retrieving the sensitive data. The normal action for any form is to have it e-mailed to you; however, regular e-mail is also susceptible to hacking. You can use plugins to have WordPress send your e-mail through a secure mail server. (One is mentioned at the end of the lesson.)
3.2.2. Storing Sensitive Data
The short answer to the problem of storing sensitive data in WordPress is: Don’t do it!
For data from web forms, plugins exist that write the information to your WordPress database and e-mail it to you. Typically, the reason for doing this is to allow the exporting of gathered data all at one time to be imported into a spreadsheet or an offline database.
If that’s the case, you need to retrieve the data every day, or even more frequently if a lot of data exists, and then delete it from WordPress. Do not keep the data stored online.
Better still: find a plugin that offers an automated method for securely transferring the data to a safe location.
Remember: There are no good reasons for storing sensitive data in WordPress. It’s that simple.
3.3. Secure Hosting
One aspect of security that sometimes is overlooked is your choice of hosting companies. Although the services offered are almost identical, including the software used to provide those services, important differences can exist in how that software is set up.
3.3.1. Account Firewalls
Most individuals and small businesses have their sites hosted on a shared server. That is, their account is just one of hundreds or possibly even thousands of other accounts on the server. It’s an efficient and cost-effective way of providing inexpensive hosting, but it poses an important security problem: keeping those accounts separate.
You could take every security step discussed so far, but if your neighbors on the shared server aren’t vigilant and a hacker gets into one of their accounts, that can leave you vulnerable, unless the hosting company has properly insulated accounts from one another. There have been several well-publicized security breaches over the years, in which literally thousands of websites were hacked or brought down because the hackers wormed their way in to others’ accounts through the server system after hacking one account.
The most you can do is research this before using hosting companies. Ask what steps they take, check forum postings for signs it has happened before, and Google the company name and security breach, and so on.
The ultimate defense you have is a good backup routine. If a server breach occurs, just take your backup and move to a new hosting company. The switch is often faster than waiting for the problem to be fixed.
3.3.2. Visible Directories
Earlier in the lesson you saw a screen shot of someone’s file directory where there was a backup of the wp-config.php file (refer to Figure 34-1). Well, it wasn’t just the readable backup file that was a problem: You should not have been able to view a list of all the files in that directory!
When you browse a domain name, you’re actually browsing the home directory on the server. And when you try to browse a directory, the server looks for certain types of files: default. html, index.html, index.php, and so on. If it doesn’t find one, the server may, depending on the hosting company’s settings, simply display a list of the files in the directory, with a link to each file, as shown in Figure 34-2.
You can see how a simple search turns up visible directories, and from a directory, you can download a wp-config.php file. Notice that I’m not accessing the file through a browser, which would have processed the php file and nothing would happen. What I did was right-click a file and download it to my computer, and that’s only possible if the directory is visible.
WordPress protects itself from hosts who leave directories visible by placing blank index.php files into all directories that shouldn’t be open. You can see this at work by adding the following to the end of your domain name: /wp-content/themes/.
If you try to view that URL, you should get a blank white screen; that’s the index.php file at work. If it weren’t there and your host allowed visible directories, you’d see a list of all your theme folders.
If for some reason a WordPress directory is visible, you can solve the problem in the same way, by uploading a plain text file called index.php, containing only <?php //Silence is golden ?>
Make sure you don’t have anything after the closing bracket, not even a space.
You can do the same for any folder you create on the web that does not have an index.php file (or other type of default file).
3.3.3. File Permissions
Sometimes, someone in a forum advises others to change the permissions on a folder or file to 777. That means anyone can read the file, edit the file, or delete the file. The advice is usually meant to solve some issue a person has with WordPress or a plugin.
Never change a permission level to 777.
Your problem might temporarily be solved, but you’re opening yourself up to much larger ones. No proper fix for a problem should involve changing permissions to that level of openness.
Although different hosting companies have different approaches to file permissions and ownership, at WordPress.org, you can find a good discussion about the recommended types of file permissions you should see in a WordPress installation—and none of them are 777, not even upload directories. Here’s the URL: