Wszystkie wpisy, których autorem jest admin

Creating an Editable Site with Google Sheets and Eleventy

Post pobrano z: Creating an Editable Site with Google Sheets and Eleventy

Remember Tabletop.js? We just covered it a little bit ago in this same exact context: building editable websites. It’s a tool that turns a Google Sheet into an API, that you as a developer can hit for data when building a website. In that last article, we used that API on the client side, meaning JavaScript needed to run on every single page view, hit that URL for the data, and build the page. That might be OK in some circumstances, but let’s do it one better. Let’s hit the API during the build step so that the content is built into the HTML directly. This will be far faster and more resilient.

The situation

As a developer, you might have had to work with clients who keep bugging you with unending revisions on content, sometimes, even after months of building the site. That can be frustrating as it keeps pulling you back, preventing you from doing more productive work.

We’re going to give them the keys to updating content themselves using a tool they are probably already familiar with: Google Sheets.

A new tool

In the last article, we introduced the concept of using Google Sheets with Tabletop.js. Now let’s introduce a new tool to this party: Eleventy

We’ll be using Eleventy (a static site generator) because we want the site to be rendered as a pure static site without having to ship all of the under workings of the site in the client side JavaScript. We’ll be pulling the content from the API at build time and having Eleventy create a minified index.html that we’ll push to the server for the production website. By being static, this allows the page to load faster and is better for security reasons.

The spreadsheet

We’ll be using a demo I built, with its repo and Google Sheet to demonstrate how to replicate something similar in your own projects. First, we’ll need a Google Sheet which will be our data store.

Open a new spreadsheet and enter your own values in the columns just like mine. The first cell of each column is the reference that’ll be used later in our JavaScript, and the second cell is the actual content that gets displayed.

In the first column, “header” is the reference name and “Please edit me!” is the actual content in the first column.

Next up, we’ll publish the data to the web by clicking on File → Publish to the web in the menu bar.

A link will be provided, but it’s technically useless to us, so we can ignore it. The important thing is that the spreadsheet(and its data) is now publicly accessible so we can fetch it for our app.

Take note that we’ll need the unique ID of the sheet from its URL  as we go on.

Node is required to continue, so be sure that’s installed. If you want to cut through the process of installing all of thedependencies for this work, you can fork or download my repo and run:

npm install

Run this command next — I’ll explain why it’s important in a bit:

npm run seed

Then to run it locally:

npm run dev

Alright, let’s go into src/site/_data/prod/sheet.js. This is where we’re going to pull in data from the GoogleSheet, then turn it into an object we can easily use, and finally convert the JavaScript object back to JSON format. The JSON is stored locally for development so we don’t need to hit the API every time.

Here’s the code we want in there. Again, be sure to change the variable sheetID to the unique ID of your own sheet.


module.exports = () => {
  return new Promise((resolve, reject) => {
    console.log(`Requesting content from ${googleSheetUrl}`);
    axios.get(googleSheetUrl)
      .then(response => {
        // massage the data from the Google Sheets API into
        // a shape that will more convenient for us in our SSG.
        var data = {
          "content": []
        };
        response.data.feed.entry.forEach(item => {
          data.content.push({
            "header": item.gsx$header.$t,
            "header2": item.gsx$header2.$t,
            "body": item.gsx$body.$t,
            "body2": item.gsx$body2.$t,
            "body3":  item.gsx$body3.$t,
            "body4": item.gsx$body4.$t,
            "body5": item.gsx$body5.$t,
            "body6":  item.gsx$body6.$t,
            "body7": item.gsx$body7.$t,
            "body8": item.gsx$body8.$t,
            "body9":  item.gsx$body9.$t,
            "body10": item.gsx$body10.$t,
            "body11": item.gsx$body11.$t,
            "body12":  item.gsx$body12.$t,
            "body13": item.gsx$body13.$t,
            "body14": item.gsx$body14.$t,
            "body15":  item.gsx$body15.$t,
            "body16": item.gsx$body16.$t,
            "body17": item.gsx$body17.$t,
            
          })
        });
        // stash the data locally for developing without
        // needing to hit the API each time.
        seed(JSON.stringify(data), `${__dirname}/../dev/sheet.json`);
        // resolve the promise and return the data
        resolve(data);
      })
      // uh-oh. Handle any errrors we might encounter
      .catch(error => {
        console.log('Error :', error);
        reject(error);
      });
  })
}

In module.exports, there’s a promise that’ll resolve our data or throw errors when necessary. You’ll notice that I’m using a axios to fetch the data from the spreadsheet. I like the it handles status error codes by rejecting the promise automatically, unlike something like Fetch that requires monitoring error codes manually.

I created a data object in there with a content array in it. Feel free to change the structure of the object, depending on what the spreadsheet looks like.

We’re using the forEach() method to loop through each spreadsheet column while equating it with the corresponding name we want to allocate to it, while pushing all of these into the data object as content. 

Remember that seed command from earlier? We’re using seed to transform what’s in the data object to JSON by way of JSON.stringify, which is then sent to src/site/_data/dev/sheet.json

Yes! Now have data in a format we can use with any templating engine, like Nunjucks, to manipulate it. But, we’re focusing on content in this project, so we’ll be using the index.md template format to communicate the data stored in the project.

For example, here’s how it looks to pull item.header through a for loop statement:

<div class="listing">
{%- for item in sheet.content -%}
  <h1>{{ item.header }} </h1>
{%- endfor -%}
</div>

If you’re using Nunjucks, or any other templating engine, you’ll have to pull the data accordingly.

Finally, let’s build this out:

npm run build

Note that you’ll want a dist folder in the project where the build process can send the compiled assets.

But that’s not all! If we were to edit the Google Sheet, we won’t see anything update on our site. That’s where Zapier comes in. We can “zap” Google sheet and Netlify so that an update to the Google Sheet triggers a deployment from Netlify.

Assuming you have a Zapier account up and running, we can create the zap by granting permissions for Google and Netlify to talk to one another, then adding triggers.

The recipe we’re looking for? We’re connecting Google Sheets to Netlify so that when a “new or updated sheet row” takes place, Netlify starts a deploy. It’s truly a set-it-and-forget-it sort of deal.

Yay, there we go! We have a performant static site that takes its data from Google Sheets and deploys automatically when updates are made to the sheet.

The post Creating an Editable Site with Google Sheets and Eleventy appeared first on CSS-Tricks.

Maintaining Performance

Post pobrano z: Maintaining Performance

Real talk from Dave:

I, Dave Rupert, a person who cares about web performance, a person who reads web performance blogs, a person who spends lots of hours trying to keep up on best practices, a person who co-hosts a weekly podcast about making websites and speak with web performance professionals… somehow goofed and added 33 SECONDS to their page load.

This stuff is hard even when you care a lot. The 33 seconds came from font preloading rather than the one-line wonder of font-display.

I also care about making fast websites, but mine aren’t winning any speed awards because I’ll take practical and maintainable over peak performance any day. (Sorry, world)

Direct Link to ArticlePermalink

The post Maintaining Performance appeared first on CSS-Tricks.

Netflix: The Spoiler Billboard

Post pobrano z: Netflix: The Spoiler Billboard

Outdoor
Netflix

Background: Social distancing helps decrease the spreading of COVID-19 drastically. That is why #StayTheFuckHome is a thing. But some people think it is okay to go out and chill. Insight: People try hard to stay away from spoilers to their favourite show. Idea: We discourage people from going out by putting up billboards filled with spoilers from Netflix Originals in gathering spaces. We then warn people of the spoilers at train and bus stations so they think twice before boarding.

The campaign is a spec campaign, and have not aired.

If the virus doesn’t stop you from going out, these spoilers will.

Advertising School:Miami Ad School, Hamburg, Germany
Art Director:Seine Kongruangkit
Copywriter:Matithorn Prachuabmoh Chaimoungkalo

Burger King: Best Neighbor

Post pobrano z: Burger King: Best Neighbor
Print
Burger King

Only Burger King offers up barbecue aroma and flame-grilled burgers. This is one of the distinguishing features the brand proudly highlights in the upcoming „Best Neighbor” campaign. Once again it comes out in a good-humored tone: now BK has decided to revamp the words on some For Rent and For Sale signs hanging on buildings next door to the stores of their largest competitors. Phrases like &ldquo;FOR RENT &ndash; Don&rsquo;t worry: tenant below never grills&rdquo;; &ldquo;FOR RENT &ndash; Don&rsquo;t worry: the neighbor doesn&rsquo;t barbecue&rdquo;, &ldquo;FOR RENT &ndash; Don&rsquo;t worry: The neighbor doesn&rsquo;t barbecue&rdquo;, and &ldquo;FOR RENT &ndash; BBQ smoke-free tenant below&rdquo; are part of the campaign created by DAVID S&atilde;o Paulo and Madrid. The signs were deployed in Rio de Janeiro and S&atilde;o Paulo, where the best locations for the campaign were found. In one of the buildings, the sign „FOR SALE &ndash; Opportunity: neighbor never grills. Ever&rdquo; brings the contact number (55 11 3022-3359). In this case, a caller to this number will get the following message: „When picking an apartment, no one really wants annoying smoke: that’s why it’s great to have a neighbor who doesn’t barbecue. But when your stomach growls, a flame-grilled patty on a Burger King sandwich makes a heck of a difference. Interested in this building? Please send an email to vizinhoperfeito@burgerking.com.br&rdquo;. Prospect buyers are directed to the real seller.

Advertising Agency:DAVID, São Paulo, Brazil
Advertising Agency:DAVID, Madrid, Spain
Global CCO & Partner:Pancho Cassis
Md:Sylvia Panico
Global COO:Sylvia Panico
Creative Vp:Rafael Donato, Saulo Rocha, André Toledo
Creative Directors:Fred Bosch, Álvaro Palma, Edgard Gianesi
Associate Creative Directors:Rogério Chaves, Fabrício Pretto
Copywriters:Guilherme Pinheiro, Toàn Trần Mai
Art Director:Rafael Ochoa
Account:Carolina Vieira, María García, Rafael Giorgino, Juliana Chediac, Martina Adati
Planning:Patricia Urgoiti
Media:Marcia Mendonça, Mateus Madureira, Felipe Braga
Innovation:Toni Ferreira
Producers:Fabiano Beraldo, Fernanda Peixoto, Patrícia Barbosa
Editor:Victor Folha
Social Media:Lucas Patrício
Production Company:Café Royal
Photos:Hanna Vadasz
Sound Production:Jamute
Client Approval:Ariel Grunkraut, Thais Nicolau, Filipe Botton, Fernanda Harb, Lidiane Martins, Vinícius Simon de Freitas

Burger King: Best Neighbor

Post pobrano z: Burger King: Best Neighbor
Print
Burger King

Only Burger King offers up barbecue aroma and flame-grilled burgers. This is one of the distinguishing features the brand proudly highlights in the upcoming „Best Neighbor” campaign. Once again it comes out in a good-humored tone: now BK has decided to revamp the words on some For Rent and For Sale signs hanging on buildings next door to the stores of their largest competitors. Phrases like &ldquo;FOR RENT &ndash; Don&rsquo;t worry: tenant below never grills&rdquo;; &ldquo;FOR RENT &ndash; Don&rsquo;t worry: the neighbor doesn&rsquo;t barbecue&rdquo;, &ldquo;FOR RENT &ndash; Don&rsquo;t worry: The neighbor doesn&rsquo;t barbecue&rdquo;, and &ldquo;FOR RENT &ndash; BBQ smoke-free tenant below&rdquo; are part of the campaign created by DAVID S&atilde;o Paulo and Madrid. The signs were deployed in Rio de Janeiro and S&atilde;o Paulo, where the best locations for the campaign were found. In one of the buildings, the sign „FOR SALE &ndash; Opportunity: neighbor never grills. Ever&rdquo; brings the contact number (55 11 3022-3359). In this case, a caller to this number will get the following message: „When picking an apartment, no one really wants annoying smoke: that’s why it’s great to have a neighbor who doesn’t barbecue. But when your stomach growls, a flame-grilled patty on a Burger King sandwich makes a heck of a difference. Interested in this building? Please send an email to vizinhoperfeito@burgerking.com.br&rdquo;. Prospect buyers are directed to the real seller.

Advertising Agency:DAVID, São Paulo, Brazil
Advertising Agency:DAVID, Madrid, Spain
Global CCO & Partner:Pancho Cassis
Md:Sylvia Panico
Global COO:Sylvia Panico
Creative Vp:Rafael Donato, Saulo Rocha, André Toledo
Creative Directors:Fred Bosch, Álvaro Palma, Edgard Gianesi
Associate Creative Directors:Rogério Chaves, Fabrício Pretto
Copywriters:Guilherme Pinheiro, Toàn Trần Mai
Art Director:Rafael Ochoa
Account:Carolina Vieira, María García, Rafael Giorgino, Juliana Chediac, Martina Adati
Planning:Patricia Urgoiti
Media:Marcia Mendonça, Mateus Madureira, Felipe Braga
Innovation:Toni Ferreira
Producers:Fabiano Beraldo, Fernanda Peixoto, Patrícia Barbosa
Editor:Victor Folha
Social Media:Lucas Patrício
Production Company:Café Royal
Photos:Hanna Vadasz
Sound Production:Jamute
Client Approval:Ariel Grunkraut, Thais Nicolau, Filipe Botton, Fernanda Harb, Lidiane Martins, Vinícius Simon de Freitas

Burger King: Best Neighbor

Post pobrano z: Burger King: Best Neighbor
Print
Burger King

Only Burger King offers up barbecue aroma and flame-grilled burgers. This is one of the distinguishing features the brand proudly highlights in the upcoming „Best Neighbor” campaign. Once again it comes out in a good-humored tone: now BK has decided to revamp the words on some For Rent and For Sale signs hanging on buildings next door to the stores of their largest competitors. Phrases like &ldquo;FOR RENT &ndash; Don&rsquo;t worry: tenant below never grills&rdquo;; &ldquo;FOR RENT &ndash; Don&rsquo;t worry: the neighbor doesn&rsquo;t barbecue&rdquo;, &ldquo;FOR RENT &ndash; Don&rsquo;t worry: The neighbor doesn&rsquo;t barbecue&rdquo;, and &ldquo;FOR RENT &ndash; BBQ smoke-free tenant below&rdquo; are part of the campaign created by DAVID S&atilde;o Paulo and Madrid. The signs were deployed in Rio de Janeiro and S&atilde;o Paulo, where the best locations for the campaign were found. In one of the buildings, the sign „FOR SALE &ndash; Opportunity: neighbor never grills. Ever&rdquo; brings the contact number (55 11 3022-3359). In this case, a caller to this number will get the following message: „When picking an apartment, no one really wants annoying smoke: that’s why it’s great to have a neighbor who doesn’t barbecue. But when your stomach growls, a flame-grilled patty on a Burger King sandwich makes a heck of a difference. Interested in this building? Please send an email to vizinhoperfeito@burgerking.com.br&rdquo;. Prospect buyers are directed to the real seller.

Advertising Agency:DAVID, São Paulo, Brazil
Advertising Agency:DAVID, Madrid, Spain
Global CCO & Partner:Pancho Cassis
Md:Sylvia Panico
Global COO:Sylvia Panico
Creative Vp:Rafael Donato, Saulo Rocha, André Toledo
Creative Directors:Fred Bosch, Álvaro Palma, Edgard Gianesi
Associate Creative Directors:Rogério Chaves, Fabrício Pretto
Copywriters:Guilherme Pinheiro, Toàn Trần Mai
Art Director:Rafael Ochoa
Account:Carolina Vieira, María García, Rafael Giorgino, Juliana Chediac, Martina Adati
Planning:Patricia Urgoiti
Media:Marcia Mendonça, Mateus Madureira, Felipe Braga
Innovation:Toni Ferreira
Producers:Fabiano Beraldo, Fernanda Peixoto, Patrícia Barbosa
Editor:Victor Folha
Social Media:Lucas Patrício
Production Company:Café Royal
Photos:Hanna Vadasz
Sound Production:Jamute
Client Approval:Ariel Grunkraut, Thais Nicolau, Filipe Botton, Fernanda Harb, Lidiane Martins, Vinícius Simon de Freitas

The 2020 WordPress Plugin Hacking Debacle

Post pobrano z: The 2020 WordPress Plugin Hacking Debacle

By now, anyone who has the internet has heard about how hackers targeted WordPress plugins during January and February 2020. Quite understandably, this hack job left many WordPress users wary about the damage done. For one of the most prevalent website template providers on the planet, this was an eye-opener.

This hack job was also
a heads-up for WordPress customers to keep their plugins updated. To avoid future security risks, customers should take the plunge and invest in free or
paid security plugins. For some business owners, these hack jobs may be a
simple annoyance, but for others, this type of security breach can be costly.

Which plugins were besieged by hackers?

Nefarious hackers had a field day of targeting the most vulnerable plugins they could identify on WordPress. They made a point of honing in on susceptible plugins which contained pre-identified security defects. These plugins had been newly patched to eliminate bugs. Either that or the hackers were able to unearth ‘zero-day exploits’ in a range of these add-ons.

These ‘zero-day exploits’ relate to weak areas in plugins that the developer has overlooked or is unaware of. A lack of knowledge of vulnerability also means that the developer does not have a patch for that particular plugin.

Some of the plugins worst hit were:

  • Duplicator – the worst hit with over 1 million installations compromised
  • ThemeGrill Demo Importer – attracted 200k hits
  • Async JavaScript – over 100k hits
  • WP Database Reset – 80k hits
  • Profile Builder Plugin – approximately 65k hits
  • Modern Events Calendar Lite – 40k hits
  • Flexible Checkout Fields for WooCommerce – 20k hits
  • 10Web Map Builder for Google Maps – 20k hits

Several other plugins
were also impacted, including ThemeREX Addons, CP Contact Form with PayPal and Simple Fields.

WordPress hacker plugin fallout

Reports initially suggested
that up to 2,000 customer websites were breached by hackers. Other than the plugins affected as indicated above, traffic
was also rerouted to scam sites. On unwittingly selecting installed reroutes, visitors found themselves
being presented with unexpected results. These included bogus survey requests,
free gifts, false downloads of Adobe Flash Player and unsolicited subscriptions
for announcements.

Malicious
JavaScript was used to infect vulnerable add-ons to redirect traffic, insert
other malware to impact theme files, and gain unauthorized access to customer
files. Hackers increased the damage implemented by creating plugin directories
that were fake. As a result, WordPress encouraged website owners to disallow
primary folder modification to minimize further potential risk.

Why do hackers hack?

Some do it for
fun, because they can, because they are malicious, can gather personal details
for gain, or because they want to claim some sort of ransom from their victims.

To place
hacking in perspective, a study by Juniper Research forecast that hacking would cost up to $2 trillion
during 2019.

A large 43 percent of cybercrimes are aimed at small businesses.

A study conducted at Maryland university indicated that a cyber-attack occurs every 39 seconds.

More than 230,000 pieces of malware are generated daily.

While there is
no need to panic in the face of these figures, necessary precautions are needed
to protect your website and your personal information.

Discovered unwanted intrusions on your website?

It is scary to find
that your website has been hacked. If you have web development skills and are
technically skilled, you’ll probably know what the best course of action is.

For the web
development novices, the best advice is also to – stay calm, and look for these
clues that your website has been compromised:

  • the most obvious clue – you cannot log into your own site
  • the site is unusually sluggish
  • you suddenly decide it might be a good idea to look at the dashboard for user accounts and see that you have attracted some foreign interest – unwelcome users
  • you receive messages of site re-directions from visitors, Google hacking notification, site suspension
  • your site is blacklisted on search engines because it definitely has been hacked, or is ranked as promoting the sale of illegal pharmaceuticals
  • antivirus and malware warnings from your installed software or warnings from site visitors

You will be in a good position to get your website operational if you take a deep breath. Place your site in maintenance mode, roll up your sleeves and get ready for business again.

Fix the mess made by the hackers

You can clean up your
site by following some basic steps. Backup, scan, do a deep clean – then take
prevention measures related to what originally instigated site susceptibility.

Site backup. Do this after you have placed your site in maintenance mode, and after you have been able to log in. This is a precaution so that you don’t lose data unnecessarily with a cleanup plugin.

Pick a security add-on. You can look through this list and pick a malware plugin to deliver a  deep scan. MalCare is recommended for an automatic site cleanup to ward off further attacks. This plugin prompts a backup through BlogVault, prior to cleanup.

Download MalCare, install
and scan
. After selecting
MalCare, follow the steps to create your account prior to being allowed to
install this add-on. After installation, you can open this program and follow
the prompts to begin a scan.

Select autoclean. The plugin will indicate the number of
vulnerabilities detected. Simply pick autoclean to remove hacked files and
malicious scripts. Choose the ‘public_html’ option, using your host or server
name, FTP type, user name, and password. Follow these steps to retrieve
this information if it is not readily available. Select ‘Apply Fix’.

Remove vulnerabilities
and install security.
Follow this link to remove vulnerabilities, and make safe updates to your
website.

A thorough cleanup. Do another scan. Make another backup once your site has been cleaned. Activate the add-ons that you want and remove those that you are not using. Create complex passwords (write these down in a safe place offline). Installing an audit plugin will help keep tabs on-site activity, alerting you to unwanted changes.

Run updates for other
add-ons. Send a request to Google to whitelist your site if needed. Check if
your host has suspended your site. Contact them if it has been so that you can
get back to business.

Moving forward

Where customers
realize that their websites have been impacted, or are using any of the plugins
listed, they should be updated promptly. A full 98 percent of WordPress hackings take place because users fail to update their
plugins.

It is further advised
that customers continue to implement updates as and when these become
available. Updates are generated for the purpose of minimizing security risks,
and to remain compatible with related functions. Being attentive to upgrades
will help to ward off threats.

The 2020 WordPress Plugin Hacking Debacle

Post pobrano z: The 2020 WordPress Plugin Hacking Debacle

By now, anyone who has the internet has heard about how hackers targeted WordPress plugins during January and February 2020. Quite understandably, this hack job left many WordPress users wary about the damage done. For one of the most prevalent website template providers on the planet, this was an eye-opener.

This hack job was also
a heads-up for WordPress customers to keep their plugins updated. To avoid future security risks, customers should take the plunge and invest in free or
paid security plugins. For some business owners, these hack jobs may be a
simple annoyance, but for others, this type of security breach can be costly.

Which plugins were besieged by hackers?

Nefarious hackers had a field day of targeting the most vulnerable plugins they could identify on WordPress. They made a point of honing in on susceptible plugins which contained pre-identified security defects. These plugins had been newly patched to eliminate bugs. Either that or the hackers were able to unearth ‘zero-day exploits’ in a range of these add-ons.

These ‘zero-day exploits’ relate to weak areas in plugins that the developer has overlooked or is unaware of. A lack of knowledge of vulnerability also means that the developer does not have a patch for that particular plugin.

Some of the plugins worst hit were:

  • Duplicator – the worst hit with over 1 million installations compromised
  • ThemeGrill Demo Importer – attracted 200k hits
  • Async JavaScript – over 100k hits
  • WP Database Reset – 80k hits
  • Profile Builder Plugin – approximately 65k hits
  • Modern Events Calendar Lite – 40k hits
  • Flexible Checkout Fields for WooCommerce – 20k hits
  • 10Web Map Builder for Google Maps – 20k hits

Several other plugins
were also impacted, including ThemeREX Addons, CP Contact Form with PayPal and Simple Fields.

WordPress hacker plugin fallout

Reports initially suggested
that up to 2,000 customer websites were breached by hackers. Other than the plugins affected as indicated above, traffic
was also rerouted to scam sites. On unwittingly selecting installed reroutes, visitors found themselves
being presented with unexpected results. These included bogus survey requests,
free gifts, false downloads of Adobe Flash Player and unsolicited subscriptions
for announcements.

Malicious
JavaScript was used to infect vulnerable add-ons to redirect traffic, insert
other malware to impact theme files, and gain unauthorized access to customer
files. Hackers increased the damage implemented by creating plugin directories
that were fake. As a result, WordPress encouraged website owners to disallow
primary folder modification to minimize further potential risk.

Why do hackers hack?

Some do it for
fun, because they can, because they are malicious, can gather personal details
for gain, or because they want to claim some sort of ransom from their victims.

To place
hacking in perspective, a study by Juniper Research forecast that hacking would cost up to $2 trillion
during 2019.

A large 43 percent of cybercrimes are aimed at small businesses.

A study conducted at Maryland university indicated that a cyber-attack occurs every 39 seconds.

More than 230,000 pieces of malware are generated daily.

While there is
no need to panic in the face of these figures, necessary precautions are needed
to protect your website and your personal information.

Discovered unwanted intrusions on your website?

It is scary to find
that your website has been hacked. If you have web development skills and are
technically skilled, you’ll probably know what the best course of action is.

For the web
development novices, the best advice is also to – stay calm, and look for these
clues that your website has been compromised:

  • the most obvious clue – you cannot log into your own site
  • the site is unusually sluggish
  • you suddenly decide it might be a good idea to look at the dashboard for user accounts and see that you have attracted some foreign interest – unwelcome users
  • you receive messages of site re-directions from visitors, Google hacking notification, site suspension
  • your site is blacklisted on search engines because it definitely has been hacked, or is ranked as promoting the sale of illegal pharmaceuticals
  • antivirus and malware warnings from your installed software or warnings from site visitors

You will be in a good position to get your website operational if you take a deep breath. Place your site in maintenance mode, roll up your sleeves and get ready for business again.

Fix the mess made by the hackers

You can clean up your
site by following some basic steps. Backup, scan, do a deep clean – then take
prevention measures related to what originally instigated site susceptibility.

Site backup. Do this after you have placed your site in maintenance mode, and after you have been able to log in. This is a precaution so that you don’t lose data unnecessarily with a cleanup plugin.

Pick a security add-on. You can look through this list and pick a malware plugin to deliver a  deep scan. MalCare is recommended for an automatic site cleanup to ward off further attacks. This plugin prompts a backup through BlogVault, prior to cleanup.

Download MalCare, install
and scan
. After selecting
MalCare, follow the steps to create your account prior to being allowed to
install this add-on. After installation, you can open this program and follow
the prompts to begin a scan.

Select autoclean. The plugin will indicate the number of
vulnerabilities detected. Simply pick autoclean to remove hacked files and
malicious scripts. Choose the ‘public_html’ option, using your host or server
name, FTP type, user name, and password. Follow these steps to retrieve
this information if it is not readily available. Select ‘Apply Fix’.

Remove vulnerabilities
and install security.
Follow this link to remove vulnerabilities, and make safe updates to your
website.

A thorough cleanup. Do another scan. Make another backup once your site has been cleaned. Activate the add-ons that you want and remove those that you are not using. Create complex passwords (write these down in a safe place offline). Installing an audit plugin will help keep tabs on-site activity, alerting you to unwanted changes.

Run updates for other
add-ons. Send a request to Google to whitelist your site if needed. Check if
your host has suspended your site. Contact them if it has been so that you can
get back to business.

Moving forward

Where customers
realize that their websites have been impacted, or are using any of the plugins
listed, they should be updated promptly. A full 98 percent of WordPress hackings take place because users fail to update their
plugins.

It is further advised
that customers continue to implement updates as and when these become
available. Updates are generated for the purpose of minimizing security risks,
and to remain compatible with related functions. Being attentive to upgrades
will help to ward off threats.