The CW Corner – 7 Mistakes You're Making with WordPress Security (and How to Fix Them Before Hackers Strike)

The CW Corner – 7 Mistakes You're Making with WordPress Security (and How to Fix Them Before Hackers Strike)

WordPress powers over 40% of all websites on the internet. That popularity makes it a prime target for hackers. Every day, thousands of WordPress sites get compromised because owners make simple security mistakes.

The good news? Most of these mistakes are easy to fix. You don’t need to be a security expert to protect your website. You just need to know what you’re doing wrong and how to fix it.

Let’s dive into the seven biggest WordPress security mistakes and their solutions.

Mistake #1: Ignoring Updates (The Silent Site Killer)

Here’s the harsh truth: 97% of WordPress security problems come from plugins. Yet only 30% of WordPress users have auto-updates enabled.

Think about it this way. When developers find a security hole, they release an update to fix it. The longer you wait to update, the more time hackers have to exploit that known weakness.

image_1

How to Fix It:
Enable automatic updates for WordPress core, plugins, and themes. Most hosting providers offer this feature in their control panels. If yours doesn’t, consider switching to a managed WordPress host.

Check your plugins weekly. Delete any you’re not using. Inactive plugins can still be exploited by hackers.

Set calendar reminders if auto-updates aren’t available. Manual updates beat no updates every time.

Pro Tip: Create a staging site to test updates before they go live. This prevents your main site from breaking during updates.

Mistake #2: Using Weak Passwords and Predictable Usernames

“admin” with password “password123” isn’t clever. It’s dangerous. 41% of WordPress users still use weak passwords or skip two-factor authentication entirely.

Hackers use bots that test thousands of password combinations per minute. A weak password like “ADMIN123” gets cracked in seconds.

How to Fix It:
Create strong passwords with at least 12 characters. Mix uppercase, lowercase, numbers, and special characters.

Never use “admin” as your username. Choose something unique that doesn’t relate to your business name.

Use a password manager like 1Password or Bitwarden. They generate complex passwords and store them securely.

Change default usernames immediately. If you already have an “admin” account, create a new administrator account with a different username, then delete the old one.

Quick Check: Can you guess your password by looking at your keyboard or personal information? If yes, change it now.

Mistake #3: Skipping Two-Factor Authentication (Your Security Backup Plan)

Passwords alone aren’t enough anymore. Even strong passwords can be compromised through data breaches or phishing attacks.

Two-Factor Authentication (2FA) adds a second layer of protection. Even if hackers get your password, they still need your phone or authentication app to get in.

image_2

How to Fix It:
Install a 2FA plugin like Wordfence or Google Authenticator for WordPress.

Set up 2FA for all user accounts, especially administrators and editors.

Use an authenticator app instead of SMS when possible. Apps like Google Authenticator or Authy are more secure than text messages.

Test your 2FA setup regularly. Make sure you can access backup codes if you lose your phone.

Remember: 2FA might seem inconvenient, but it’s much less inconvenient than rebuilding your hacked website.

Mistake #4: Forgetting to Back Up Your Website

“My hosting company handles backups.” Famous last words from website owners who lost everything.

Hosting backups might not include all your files. They might be stored on the same server that gets hacked. Or they might be overwritten before you realize you need them.

How to Fix It:
Set up automated daily backups that include your entire website and database.

Store backups in multiple locations. Use cloud services like Google Drive, Dropbox, or Amazon S3.

Test your backup restoration process monthly. A backup that doesn’t restore is useless.

Keep at least 30 days of backup history. Sometimes you don’t notice problems immediately.

Use plugins like UpdraftPlus or BackWPup for automated scheduling.

Reality Check: When did you last check if your backups actually work? If you can’t answer that, check today.

Mistake #5: Installing Themes and Plugins from Sketchy Sources

Free premium themes and plugins sound tempting. But they often come with hidden malware or backdoors that give hackers access to your site.

Even legitimate-looking themes can contain malicious code that steals user data or redirects visitors to scam sites.

image_3

How to Fix It:
Only download themes and plugins from the official WordPress repository or established developers.

Check ratings and reviews before installing anything. Look for recent updates and active support.

Research the developer. Do they have other plugins? A professional website? Good reviews?

Scan new themes and plugins with security tools before activation.

Delete unused plugins immediately. Don’t just deactivate them: remove them completely.

Warning Sign: If a “premium” theme or plugin is offered free on a random website, it’s probably infected with malware.

Mistake #6: Ignoring File Permissions (The Technical Blind Spot)

File permissions control who can access what on your server. Wrong permissions can let hackers read sensitive files or upload malicious code.

Most WordPress users never check their file permissions. They assume their hosting provider set them correctly. That’s a dangerous assumption.

How to Fix It:
Set correct file permissions: 755 for directories and 644 for files.

Never use 777 permissions unless absolutely necessary (and change them back immediately after).

Protect your wp-config.php file with 600 permissions.

Work with your hosting provider to audit permissions if you’re unsure.

Use security plugins that monitor and alert you about permission changes.

Technical Note: If file permissions sound too complex, ask your web developer or hosting support to check them for you.

Mistake #7: No Security Monitoring (Flying Blind)

Many WordPress owners only discover they’ve been hacked when visitors complain or Google flags their site. By then, the damage is done.

Hackers often work silently, stealing data or using your site to attack others. You need active monitoring to catch problems early.

image_4

How to Fix It:
Install security monitoring plugins like Wordfence, Sucuri, or iThemes Security.

Set up email alerts for suspicious login attempts, file changes, or malware detection.

Monitor your website traffic for unusual spikes or patterns.

Check your site regularly from different devices and browsers.

Use Google Search Console to monitor for security warnings.

Pro Tip: Set up uptime monitoring to alert you immediately if your site goes down. Services like UptimeRobot offer free basic monitoring.

Taking Action: Your Security Checklist

Security isn’t a one-time task. It’s an ongoing process. Here’s your priority order for fixing these mistakes:

  1. Enable automatic updates immediately – This fixes your biggest vulnerability right now
  2. Change weak passwords and usernames – Use a password manager to make this easy
  3. Set up 2FA on all accounts – Add that crucial second layer of protection
  4. Configure automated backups – Your safety net for when things go wrong
  5. Audit your plugins and themes – Remove anything suspicious or unused
  6. Check file permissions – Get help if this feels too technical
  7. Install security monitoring – Your early warning system

Don’t try to fix everything at once. Start with automatic updates and work down the list. Each step makes your site significantly more secure.

Remember: The best time to secure your WordPress site was yesterday. The second-best time is right now.

Need help implementing these security measures? Our team specializes in WordPress security and can audit your site for vulnerabilities. Contact us for a security consultation that could save your website from becoming another hacking statistic.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – 7 Mistakes You're Making with WordPress Security (And How Hackers Exploit Them)

WordPress security vulnerabilities shield protection against hackers and malware attacks

Think your WordPress site is secure? You might be shocked to learn that 97% of WordPress security problems stem from plugin vulnerabilities alone. Even worse, hackers know exactly which mistakes you’re making, and they’re counting on you to keep making them.

Don’t panic. Most WordPress security breaches happen because site owners unknowingly leave the digital equivalent of their front door wide open. The good news? These mistakes are completely preventable once you know what to look for.

Let’s dive into the seven most dangerous security mistakes that make your WordPress site an easy target for cybercriminals.

1. Running Outdated or Inactive Plugins

Here’s a scary statistic: only 30% of WordPress users have auto-updates enabled on their websites. That means 70% are sitting ducks for hackers who specifically target outdated plugins.

image_1

How Hackers Exploit This: Cybercriminals use automated scanning tools that crawl the web looking for sites running vulnerable plugin versions. When they find one, they already have the exploit code ready to go. It’s like leaving your house key under the doormat with a sign pointing to it.

Take the 2023 vulnerabilities in WP Fastest Cache and Essential Add-ons for Elementor. Thousands of websites running outdated versions became instant targets. Hackers didn’t need to be clever, they just needed to find sites that hadn’t updated.

The Fix: Enable automatic updates for plugins whenever possible. If you prefer manual control, check for updates weekly. More importantly, delete any plugins you’re not actively using. Inactive plugins are still attack vectors that hackers love to exploit.

2. Using Weak Passwords and Skipping Two-Factor Authentication

Here’s a reality check: 41% of WordPress users don’t use strong passwords or two-factor authentication (2FA). If your admin password is “password123” or your business name plus the year, you’re basically sending hackers an invitation.

How Hackers Exploit This: Brute force attacks are the digital equivalent of trying every key until one opens the lock. Hackers use bots that attempt thousands of login combinations per minute. Since WordPress allows unlimited login attempts by default, these bots can run 24/7 until they crack your password.

Once they’re in, they own your site. Customer data, financial information, email addresses, everything becomes theirs to sell or exploit.

The Fix: Use passwords that are at least 12 characters long with a mix of letters, numbers, and symbols. Better yet, use a password manager to generate unique passwords for every account. Enable 2FA immediately, Google’s research shows it stops 100% of automated bot attacks.

3. Installing Plugins and Themes from Sketchy Sources

Free premium themes and plugins sound tempting, right? Those “nulled” versions of expensive plugins seem like a steal. Here’s the truth: if something seems too good to be true, it probably contains malware.

image_2

How Hackers Exploit This: Malicious developers embed backdoors directly into these “free” premium plugins. The moment you install them, hackers have a secret entrance to your site. Some plugin viruses are designed to automatically infect every other plugin and theme on your installation, spreading like wildfire through your entire WordPress setup.

These backdoors often go undetected for months, giving hackers plenty of time to steal data, inject spam links, or use your server for cryptocurrency mining.

The Fix: Stick to plugins and themes from WordPress.org, reputable commercial developers, or well-established marketplaces. Yes, you might pay more upfront, but it’s infinitely cheaper than dealing with a hacked website.

4. Ignoring File Permissions

File permissions might sound technical, but they’re basically your site’s security guard. When configured incorrectly, they’re like having a security guard who lets anyone walk into your building.

How Hackers Exploit This: Loose file permissions allow attackers to access sensitive files they shouldn’t see. Once they have limited access, they can often escalate their privileges and gain control of critical system files. It’s like giving someone permission to use your bathroom, and they end up with keys to your entire house.

image_3

With proper access, hackers can modify your site’s code, steal database information, or install persistent backdoors that survive even when you clean up other security issues.

The Fix: Follow the principle of least privilege. Files should be set to 644 permissions, directories to 755. Your wp-config.php file should be 600. If these numbers look like gibberish, ask your hosting provider to audit your file permissions.

5. Procrastinating on WordPress Updates

Those update notifications aren’t suggestions: they’re security bulletins. Every WordPress update includes patches for newly discovered vulnerabilities. When you ignore them, you’re essentially leaving known security holes open for hackers to exploit.

How Hackers Exploit This: WordPress developers openly publish what each security update fixes. This creates a roadmap for hackers who can easily identify which sites haven’t updated and target the specific vulnerabilities that remain unpatched.

It’s like fixing a broken lock on your front door but announcing to the neighborhood exactly when the repair will happen. Unpatched sites become obvious targets.

The Fix: Update WordPress core, plugins, and themes as soon as updates become available. Schedule a weekly maintenance window to check for and install updates. Most hosting providers offer staging environments where you can test updates before applying them to your live site.

6. Skipping Backups and Security Monitoring

Not having backups is like driving without insurance: you’ll only realize how crucial it is when disaster strikes. Similarly, running a WordPress site without security monitoring is like closing your eyes and hoping nothing bad happens.

How Hackers Exploit This: Without backups, when (not if) your site gets compromised, you have no clean version to restore. Hackers know this, which is why some attacks are designed to corrupt or encrypt your existing files, leaving you with no recovery options.

image_4

Without security monitoring, attacks can run undetected for weeks or months. During this time, hackers can steal customer data, inject malicious code, or use your site to attack other websites.

The Fix: Set up automated daily backups stored off-site (not on the same server as your website). Install a security plugin that monitors file changes, login attempts, and suspicious activity. For critical business sites, consider our email security services that include comprehensive monitoring.

7. Installing Software from Unknown Repositories

This mistake often flies under the radar but can be the most dangerous. Installing plugins or themes from forums, random websites, or commercial repositories outside the WordPress ecosystem introduces unknown code into your installation.

How Hackers Exploit This: Unlike WordPress.org plugins that undergo community scrutiny, third-party sources may lack any security review process. These repositories are often intentionally compromised or simply don’t have the resources to properly vet code.

Hackers exploit this by creating legitimate-looking plugins or themes that contain hidden malware. Once installed, these give attackers automatic access to your site without needing to break in through other methods.

The Fix: Stick to WordPress.org for free plugins and themes. For premium options, buy directly from the developer or established marketplaces like CodeCanyon. Never download “nulled” versions of paid plugins: they’re almost always infected with malware.

Your Next Steps

WordPress security isn’t rocket science, but it does require consistent attention. Start by auditing your current setup against these seven mistakes. Update everything, remove unused plugins, strengthen your passwords, and enable 2FA.

Remember, hackers are counting on you to make these mistakes. Don’t give them the satisfaction. A few hours of security maintenance now can save you weeks of cleanup later: not to mention the potential loss of business and customer trust.

Need help securing your WordPress site? We specialize in helping businesses protect their digital assets without the technical headaches. Your website is too important to leave to chance.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – Adding Custom Shortcodes to WordPress

I wanted to create a custom HTML code function, so made one that will generate a line feed. I tested it to neaten up the output from my favorite WordPress statistics plugin: WP-Statistics by Verona Labs.

This shortcode gives the ability to add line feeds to WordPress page, post or report outputs to improve their readability. The function can easily be modified to generate any HTML output by doing this:

  • rename “newline” in the “add_shortcode” line to whatever you’d like the shortcode to be named
  • adjust the HTML code inside the quotes in the “return” line

In this example, we’ll create the line break shortcode.

Creating the Line Break Shortcode

Adding shortcodes in WordPress is easily accomplished by simply inserting the appropriate coding for the shortcode into your child theme’s functions.php file.

Note: Child themes should always be used. Changes made directly to the parent theme’s files are usually overwritten each time the parent theme is updated.

To add the code, first back up your site and then do the following:

  • Log into the WordPress Dashboard as an administrator
  • Navigate to Appearance > Theme Editor
  • Select Theme Functions (functions.php) under Theme Files in the right column
  • Add the short function code lines below
/* -- Start of line breaks shortcode --*/
function line_break_shortcode() {
return '<br />';
}
add_shortcode( 'newline', 'line_break_shortcode' );
/* -- End of line break shortcode --*/

Adding Line Breaks

Once the code has been added to your functions.php file, all you have to do is add the
shortcode in your text to generate a line feed at that point. The beauty of doing this as a shortcode is that it can be inserted in places that do not normally allow you to add them – like in the email output of the WP-Statistics plugin.

Note: When testing your output from the WP-Statistics plugin, there is a convenient feature that allows you to send output every minute to see what you will be sending. As a rule I normally have the report set to send daily.

A Working Example

There were a couple of WP-Statistics report items that were of particular interest to me. One is the last post date. This is handy as a reminder when one should add one or more posts to a site – especially a blog – so the site content doesn’t appear stale (or as an alternative, simply do not show blog post creation dates). Even if you are not displaying the post dates on the site, it is good to know when you last posted something.

An example of the report pattern I used was this (note that in some WordPress themes the “[” and “]” characters in the example below display as repeated – there should only be one “[” opening shortcode character and one “]” closing shortcode character surrounding the shortcode itself when you use it):

WP Statistics report for https://CWCorner.com WordPress site:
[newline]
_______________________________________________
[newline]
[newline]
Last post date: [[wpstatistics stat=lpd]]
[newline]
Total Site Posts: [[wpstatistics stat=postcount]]
[newline]
Total Site Pages: [[wpstatistics stat=pagecount]]
[newline]
Total Site Users: [[wpstatistics stat=usercount]]
[newline]
Online Users at Report Time: [[wpstatistics stat=usersonline]]
[newline]
_______________________________________________
[newline]
[newline]
Today's Visitors so far: [[wpstatistics stat=visitors time=today]]
[newline]
Today's Visits so far: [[wpstatistics stat=visits time=today]]
[newline]
Yesterday's Visitors: [[wpstatistics stat=visitors time=yesterday]]
[newline]
Yesterday's Visits: [[wpstatistics stat=visits time=yesterday]]
[newline]
_______________________________________________
[newline]
[newline]
Total Visitors: [[wpstatistics stat=visitors time=total]]
[newline]
Total Visits: [[wpstatistics stat=visits time=total]]
[newline]
_______________________________________________
[newline]
[newline]
End of WP Statistics Report.
[newline]

I used the underline characters to separate various parts of the output for clarity. This report pattern generated a nicer, more readable report that even looked great when viewing it on my cell phone.

While I initially added this function as a way to neaten up the output of the WP-Statistics email report – the function should work just about anyplace in WordPress except in the PHP coding itself.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – Adding Akismet comment spam protection

Akismet provides a convenient and free way to protect your personal WordPress site or blog from spam.

Many times we’d like to allow comments to be left on our WordPress site. The hassle with this can be the tremendous amounts of spam that come through the forms on websites.

Akismet is a compact WordPress plugin that filters the incoming comments. It is pretty straightforward to use and pretty easy to set up as well.

Install the Akismet plugin

The first step in this process is to ensure that the Akismet plugin is installed in your WordPress website:

      • Log into your WordPress website’s dashboard as an administrator
      • Click on Plugins in the left dashboard navigation column
      • Look and see if Akismet is listed – if it is – and it is not activated you can proceed to the Akismet Setup step below – otherwise
      • Click on Add New under Plugins in the dashboard navigation column
      • If you don’t see Akismet in the plugins, then in the text box to the right of the work Keyword in the row starting with Featured type in Akismet – then click on its Install Now button. Do not activate it yet.

Perform the Akismet Setup

To set up Akismet in your website, you will need an API code from the Akismet site. The first step in that process is to navigate to:
https://akismet.com/plans

This (as of the time of this writing) brings you to a page that should look similar to the screenshot below.

Akismet offering pricing page

Akismet offering pricing page

To get the free version of Akismet comment spam protection, you will need to click on the Get Personal button on the above page.

Once you’ve done that, you should see a page similar to the one below. Before attempting to fill out anything on this page, we need to set that $36 / YEAR to $0 / YEAR. Click on the $36 / YEAR box and drag it to the left.

Akismet Default $36 per year page

Akismet Default $36 per year page

Dragging that $36 / YEAR box to the left should change the page to display something like the one below showing 0$ / YEAR. You can also see that the information to fill in has changed.

Akismet $0 per year page

Akismet $0 per year page

Akismet $0 per year page

Now fill in the information completely. Note that you need to be able to check all three checkboxes indicating the following:

      • you don’t have ads on your site
      • you don’t sell products/services on your site
      • you don’t promote a business on your site

If these are the case, then you will qualify for a free, personal plan.

All you have to do once you have gotten this far is follow the directions on the page below.

Akismet signup complete page

Akismet signup complete page

Finally, it is suggested that while on that settings page in Akismet, you can choose to show the number of approved comments beside each comment author and choose whether to show a privacy notice or not. Then just click the Save Changes button and you are on your way!

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – PHP notifications in the WordPress dashboard

Every piece of popular software gets updated over time. PHP is no different.

PHP 7.4 is the latest version of PHP 7 at the time of this writing. It was originally rolled out November 28, 2019 and will receive security support until November 28, 2022. It also appears that PHP 7.4 may be the last of the PHP 7 releases, as PHP 8.0 was rolled out on November 26, 2020.

This is all great news, since each newer PHP version so far has continued to provide:

  • considerable (but not total) backward compatibility
  • faster execution speeds
  • greater security.

We’ve seen many PHP upgrades since running WordPress over many, many years. Our preliminary testing has always shown that many WordPress plugins and themes don’t work seamlessly with new versions of PHP as they are rolled out. As for PHP 7.4, the WordPress core and its latest default themes do. Unfortunately, many sites will simply break if caution isn’t taken to ensure all of their components – the core, the plugins and the themes – are PHP 7.4 compliant. For this reason, we usually don’t switch PHP to the later version until we are confident most things will work. When you think about the many thousands of themes and plugins out there for WordPress, it is no surprise that sometimes this takes longer than a year.

WordPress PHP notifications

PHP versions older than PHP 7.2 now trigger the red circle with an exclamation point PHP notification that administrative users see in the WordPress dashboard.

PHP update required notification - Site Health Status - Should be improved

PHP update required notification
Site Health Status – Should be improved

Bear in mind that WordPress only issues a warning about 7.1 and lower. The red notice in the dashboard is not shown for higher versions. Navigating to Tools > Site Health yields more details about site health.

Site Health - Should be Improved - Site Health Status - 1 critical issue - running outdated version of PHP 7.1 requires an update

Site Health – Should be Improved
Site Health Status – 1 critical issue – running outdated version of PHP 7.1 requires an update

PHP 7.2 just went to end of life November 30, 2020 – hence the red PHP update required notice that shows in the dashboard for anything older than 7.2 doesn’t show if you are running PHP 7.2 and above.

Site Health Status - Good - PHP 7.2 which should be updated

Site Health Status – Good
PHP 7.2 which should be updated

If you are running PHP 7.3 (or newer) you will not get the red notice described above. However, in the site health you will see an indication stating “Your site is running an older version of PHP (7.3.x) which worries many when they see it.

Site Health - Good - Site Health Status - 1 recommended improvement - running an older version of PHP - PHP 7.3.25

Site Health – Good
Site Health Status – 1 recommended improvement – running an older version of PHP – PHP 7.3.25

The fact is that PHP 7.3 will be receiving security updates until December 6, 2021. Given that, there is plenty of time to get ready for PHP 7.4.

Site Health Status - Good - PHP 7.2 and above

Site Health Status – Good
PHP 7.2 and above

The plan at CharlesWorks is to make PHP 7.4 available in the upcoming months. When that happens, you will notice that each of the PHP 7.x versions you see in the DirectAdmin interface will be bumped up by one version. So you will always still be able to go back to 7.3 if needed.

PHP 8.0 was released on November 26, 2020 with an expected security support date of October 26, 2023. There appears to be more incompatibility between it and PHP 7. CharlesWorks would not expect to roll this version out until nearer the end of 2021. Let’s give the world a chance to find all of the bugs for us.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail

The CW Corner – WordPress loading images – blank thumbnail issue

Sometimes in a WordPress website an issue develops where when loading images into media library, only a blank thumbnail shows. It appears a space is created in the database for the picture but there is no content in it.

After testing compatibility of plugins, themes, php, etc., the problem persisted.

To resolve this, one can navigate here logged into WordPress as an administrator:
Go to Dashboard > Settings > Media

Make sure the correct default file path is showing there. When troubleshooting this issue on a site that was unable to upload media files, the file path was shown as:

/home/username/domains/thedomainname.com/private_html/wp-content/uploads

Note that the “username” and “thedomainname.com” in the above and below path examples will be the Linux username and the actual site domain name respectively that you are troubleshooting.

The fix

When this path was removed, the image file upload worked normally again and the problem appeared to be solved.

Possible Reasoning or Causes

In the DirectAdmin path structure, there are two places the website’s servable coding (like WordPress or HTML sites or Joomla, etc.) might be stored:

/home/username/domains/thedomainname.com/public_html

or

/home/username/domains/thedomainname.com/private_html

The “public_html” folder is where DirectAdmin normally places the website’s code (again, referring to all the files and programs that make up the actual WordPress or HTML or Joomla site’s coding, etc.).

The “private_html” folder is where DirectAdmin normally tries to place the website’s code when its content is encrypted. That’s why there is an option in DirectAdmin’s site control panel that allows one to “Use a symbolic link from private_html to public_html”. This option allows for using the same data in http and https.

The suspicion here is that a setting got changed or an update occurred causing the WordPress system to use the private_html setting when the site resides in public_html. Removing the file path from the settings forced WordPress to use where the system actually defaulted to – which cleared the problem.

We may never know how the setting actually got bunged up, but it is an easy fix once it is.

FacebooktwitterredditpinterestlinkedinmailFacebooktwitterredditpinterestlinkedinmail