Web Fundamentals

I know I’ve used this clipart before that’s in the featured image (maybe I like it!), but because the Guy Fawkes mask has become synonymous (thanks to Anonymous) with web hackers and in turn with website security, I found it befitting to use once again.

This post is in direct relation to the talk I am about to give this Thursday for NIM on helping people overcome their website security insecurities. I will post the slides by the end of the week.

A little background…

Ever since I’ve been in the field of website security, it’s taken me a while to understand it. Working for Sucuri definitely helped in understanding it —but when I first started I did NOT get website security. It made no sense to me. And I’m a guy who comes from the agency world. I used to do front-end development work, I know design process, development process. That makes sense, you take one step forward and get closer to your goal…hopefully. Not in website security, you side-step constantly. Because it’s not about control. Website security is a combination of technology, process, and people. You can’t control all those things, you can assess and mitigate risk in those areas, but you can’t control.

Helping people overcome their website security worries..

The motivation I have for giving the talk is two-fold:

I really do want to help people overcome their worries and fears. Website security can be frustrating, befuddling, scary, complex, and down-right incomprehensible. And to preface, this is a post about website security. Not web security, not IT security, not PC security, or network security. This is a post on protecting your website. Although, all those other layers of security do sort of play a role in website security, that’s why it can be super confusing.

Is to let people know that as website owners and managers, we have a responsibility to not only our sites, but our visitors, the world wide web as a whole. We need to be good stewards of the internet and that starts with the properties that we manage online. Our posture needs to be strong, solid.

So…I guess you could say my hopes for this post/talk are that the audience picks up one (hopefully more) tidbits of information that will make them more diligent online. I want people to understand website security a little better and to give them a plan of action to get their website security and online posture in order.

Let’s begin

The first thing I need everyone to understand is that website security involves several things. It involves Technology, Processes, and the People:

Technology – you have a local computer – you have a hosting environment, the different systems that you use that are integrated with your website, social media, the list goes on..

Process – Protocols that are used to transmit data (HTTP/HTTPS), protocols you use to recover your site once it’s been hacked, the process for updating your website or storing a password, the list goes on..

People – This one’s the hard one, the wildcard. We have hackers, that are getting better by the minute coming out with new technology. There’s us – the website owners – maybe we don’t have enough education. Then there’s the people that visit our website, maybe they have malware on their computer and upload something to your site, the list goes on..

So, the point is, we can’t control everything, but we can mitigate the risk.

Let’s talk about the people, mainly hackers…

Originally ‘hacker’ was a term of esteem, used to describe someone who tinkered around with systems and could break things down, reverse engineer, someone who was really good at understanding their system (whatever it was). Now it’s used to describe someone who wants to do malicious harm online.

HACKERS: White-hat, Black-hat, Grey-hat , Blue-hat. There are different types of hackers.

Script Kiddies – usually computer novices who take advantage of hacking tools, vulnerability scanners and the like

Hacktivists – groups like Anonymous, hacking for a cause, usually to expose information, get someone out of prison, expose a corrupt official, things like that.

Cyberterrorists – hackers that go after government entities. Experts say World War III will be fought online, I whole-heartedly believe that.

Organized Criminal Hackers (Hacking rings) – groups that take down targets like Home Depot, the MySpace passwords that were recently stolen, etc.

Security researchers – the good guys (or the in-betweeners – Grey-hats) that try to get ahead of the bad guys or find a vulnerability before it’s exploited.

Motivations of hackers:

Revenue/Money

Resources

Just because they can / or the challenge of it.

Attack types and distribution..

For the most part you’re going to see two types of attacks. Automated, which make up the vast majority of the attacks that are out there. Then the less frequent targeted attacks. The targeted attacks are the ones we hear about and read about in the news headlines. But the ones we really need to worry about are the opportunistic or automated attacks. Given enough time, attackers can sit back and have their networks work for them, and have their scripts slowly find, test, and attack every available target on the internet. Malicious automation has gotten increasingly sophisticated and shows no signs of slowing down.

It’s pretty scary stuff, but to give you a precursor, Google reported in March of 2015 that 17 million website users had been greeted with some form of malware warning that the websites visited were either trying to steal sensitive information or trying to install malicious software on the users’ computers. In March of 2016, that number jumped to 50 million!! I imagine next year that number will grow to triple, maybe quadruple that. You can see as the internet grows, so does malware distribution. Google, alone, blacklists over 20,000 websites per week, over a million per year. That’s pretty staggering.

But what are some of the vehicles for distributing malware? There are a lot, almost too many to name, but I’ll name a few that’s seen quite often:

DDoS attacks – it’s an attempt to make a website unavailable by overwhelming it with traffic from multiple sources.

Brute Force Attacks – this is a trial and error method used by hackers to crack passwords through exhaustive efforts, not strategic ones. We see this a lot with Content Management Systems.

Software vulnerabilities – a weakness in a website or system that allows a hacker to gain access and/or infect it with malware. These are usually due to people not updating their systems.

Drive-by Downloads – refers to the unintentional download of a virus or malware onto a personal computer or mobile device

Malicious Redirects / SEO spam – this is the manipulation of a website’s SEO and/or links to get traffic to a certain page. Often times a pornography site, or pharma page like Cialis or Viagra.

There are others like XSS (Cross-site scripting), SQLi (SQL injections), RFI (Remote File Inclusion), LFI (Local File Inclusion), and more. So we need to be very diligent, things are already working against us.

But what do we control as website owners?

A few things, right? Right now, we control our website (well, hopefully if you haven’t been hacked and locked out of your site), and what goes on it — things like themes, plugins, modules, extensions, add-ons…

We also control our hosting environment. And I want to make a quick note on how hosting plays a role in website security. Here is a picture of my CyberDuck (the FTP client) – I’ve blurred out a few of the domains I have on there (for security purposes).

The thing to note here, is that all these 6 sites, all these properties, they sit next to each other in your hosting account. It doesn’t make a difference to me if you have a dedicated server, a VPS, or a shared server. Most people have shared servers. Why? Because they’re cheap and they offer unlimited domains. I don’t think it’s much of an issue that people sit on shared servers with other people and “share” the resources, that’s not really the problem. Hosting providers will have their infrastructure set up so that it would be very difficult for malware or a virus to jump from one account to the other. But the issue it within our own hosting account.

Take the above picture. Say the two sites that are not blurred out – BeingAJiLe.com and AdamJamesLamagna.com – say these sites were really important to me (they are), but let’s say those are the only two I cared about on my shared server. The other 4 sites that are blurred out, let’s say I don’t care about them. Let’s say I never update (I do, but for argument sake). That means that those sites are susceptible through software vulnerabilities, or weaknesses in the code. If one of those sites gets infected, it could infect all the other sites on my server through an activity called cross-site contamination. I wrote a post on it. But remember this — your web host / server is only as strong as its weakest link.

Your web host /server is only as strong as its weakest link

And that’s how hosting plays a roll in website security. People put development or test sites on the same server as production sites, and then forget about those sites. Take a count of how many sites you have on your server, and do a little cleanup if there are sites on there that you don’t care about.

What do we do to actively protect our sites??

This is the thing, there’s really only 1 thing you can do to protect your site. And that’s to install a firewall, specifically a website application firewall. A firewall is a catch-all phrase, right? There are network firewalls, server-level firewalls, local computer firewalls, they all protect different things. You can read up on the Differences in Security Firewalls, it’s a good post. But a website application firewall, also known as a WAF, will protect your site from malicious incoming web traffic. What it does is inspects packets of data and compares it to known vulnerabilities and known trusted sources. If it matches a trusted source, it passes through, if it matches a vulnerability, it doesn’t.

But Firewalls, as all security technologies, are not infallible. They make mistakes, not very often, but maybe there’s a new virus that it hasn’t seen yet. It won’t pick up on it and block it from your website. But that’s the reality and why having a good online posture comes in handy.

Understanding the security state of your websites…

Another technology you can use to get insight into what is going on already on your website is called a scanner, or monitoring device. There are a few free ones out there like these:

All pretty solid technologies, but again they’re fallible. They’ll check the source code and files and compare it to known vulnerabilities. If a vulnerability has not been discovered yet, it won’t pick up on it. But that’s just the way it is, so we have to be strong in our online posture to be able to react accordingly, and hopefully prevent infection from ever happening.

Essentials of good online posture for your website security..

A few things (and let me preface this by saying ‘I don’t want to tell you what you already know’) that I want to impress upon you that are essential to good online posture.

Backups – this one should be pretty obvious. You need to backup the files and the database (both of these!!). If you don’t change your content all that often, backup once a month. If you blog everyday, backup daily. Now for each specific CMS, there will be tools you can use. For WordPress, I use BackUpWordPress – it lets me automate backups on a frequent basis. But, what it will end up doing is placing the .zip file and .sql backup on the server. Remember what I said earlier about servers. You need to remember that once your backups are complete, to remove them from your server. Put them in a safe place on your local computer or somewhere in the cloud. Otherwise, your backups could become corrupted if your website gets infected.

Updates – another one that’s pretty obvious. You need to update your site. Along with cool new features also comes security patches. This is what we care about – security patches. Now WordPress has been really great at backwards compatibility, meaning that when you update, it’s rare that thing break on your site. Well…as long as it’s not super customized. For those sites that are super custom or other CMS’s that aren’t great at backwards compatibility (ehem…Drupal), then the only way to really protect against this is to get a website application firewall – what I talked about earlier. Most firewalls will stop those vulnerabilities at the edge before it even gets to your site. Known security patches will get written into a firewall’s ruleset to help protect. Otherwise, I would make plans on fixing your website to be able to do updates.

Passwords – I believe people are getting much better about their passwords, I think… Use a password manager like LastPass or 1Password. I bought 1Password for $50 for my lifetime, it’s totally worth it. Password managers will generate strong passwords for you, you don’t have to memorize them (you only have to memorize one – the one that gets you into 1Password). It will open up a particular website and autofill for you, which is super nice! And you can also share passwords via vaults with team members through a service like DropBox or Google Drive.

Access Control / User Access – this ones always a tricky one. You have a CMS, and other users need to be on for whatever reason. Maybe they put new products on the site, or write blog posts for you, or make updates to plugins. Whatever the reason, users need to get on your site, you can limit their access through things like user roles, which WordPress does really well. But the other piece is authentication. Authentication is huge in the CMS world. I wold strongly suggest enabling something called two-factor authentication. You can do this pretty easily in WordPress and I’m sure other CMS’s too. You need to download Google Authenticator in the App Store using your Android or iPhone. Then I used the Google Authenticator plugin. When you install the plugin and go to a User (you can have a different code for each user, which is ideal) it will ask you to enable it and a QR code will pop up. On your iPhone/Android, you just scan the QR code and then miraculously it’s synced up. Now, every time you go to log in, it will ask you to put in your 6-digit code from Google Authenticator. The system knows it’s YOU who is logging in, and not someone else coming through a Brute Force attack. Now, if you don’t have an iPhone or don’t want the hassle, you can always install CAPTCHA or ReCAPTCHA, which will authenticate that the user logging in is not a robot/bot by asking it to spell some hard to read text or doing a math problem. I prefer Google Authenticator, but CAPTCHA is at least another layer of security.

So, where do I start if I don’t know where to start…

You start with an asset inventory list:

Create a list of all the sites you own or manage:

Where are those sites hosted?

What plugins, modules, extensions, themes, 3rd-party systems are on or integrated with my website? Are they necessary? If not, remove them.

Make a list of all the people who are allowed access to your site. Evaluate their permission levels, stress strong passwords, and enable two-factor authentication.

Make a backup of each site:

Files and Database – remember to take them off your server and store them some place safe.

Make sure your site is updated:

Core files, plugins, themes, modules, extensions, etc.

Scan your sites for malware:

Use one of the free DIY tools offered by Sucuri or other companies.

Or use a scanner specific to your CMS, see below.

Actively protect your site using a Firewall or CMS specific technology.

CMS specific scanners will compare your install to a trutsted install of the specific CMS to see if things have changed much, etc. It’s good to see if files have been changed or if there’s something on your site that just shouldn’t be there.

If you absolutely can’t pay for a Firewall and need something free, then I’ll use a combination of Cloudflare’s free CDN service, and Wordfence (this is only for WordPress users) – they bill the plugin as the “most downloaded security plugin for WordPress” – I feel like I’ve heard that before. But either way, this combination works really well for my sites, but keep in mind, my sites aren’t super high traffic. I imagine if you have a super high traffic site, that you can pay for a reasonably priced firewall.

But if you can’t, the above combination works for me. I use Wordfence’s automated scanning and Firewall, in conjunction with Cloudflare’s free CDN network (which will speed your site up regardless) and their security features. I also have two-factor authentication on my site and I use Login Lockdown which will limit Brute Force attempts.

In closing…

I know this is all a lot to take in. Website security just isn’t one thing, it’s many. We were told that putting up a website is easy, and that’s true, it is easy. But managing and protecting and keeping your site/visitors secure on a daily basis is the hard part! It’s a constant battle, but I hope this brought a little clarity to securing your website and being a more responsible steward of the internet.

I get this question a lot when I talk to people on the phone. I deal mostly with agencies and larger companies who have 20, 30, 100 sites sitting on 1,2, or 5 servers (or dozens of hosting accounts) and want to know about cross site contamination. It’s an interesting concept. If one site gets compromised and infected with malware, will the other sites that are sitting on the same server get compromised? Well, the real answer is…..maybe.

Let’s talk about life…

I started doing research on this subject when I came to work for Sucuri. I always thought it was a notion cooked up by the security experts trying to scare consumers into submission—you can get screwed just by sitting next to someone or sharing the same cutting board as the raw chicken? But this holds true in life all the time. Whether you’re at the movies and some unruly teenagers walk in—there goes your enjoyable movie-watching experience. Or you serve a platter of vegetables after you’ve cut them on the same counter top you forgot to wash off after you marinated the steaks—lucky party guests!!

True story:
Stephanie Smith, a children's dance instructor in Minnesota, was paralyzed from E. Coli which just happened to infect the burger she ate at a backyard BBQ that her mother cooked her. How, you ask? Through cross contamination, and a very slight change in the slaughterhouse's process. You can read about her grueling ordeal here - Real Life Impacts: The Stephanie Smith Story

And how does this relate to website cross contamination, well it’s a pretty straight line. If a website is infected with a virus, then that virus can spread or attach itself to all the other websites it sits next to. And this is how it happens, it can be subtle, or slow, fast or fierce, but it can (and does) happen!

Yet…I still wasn’t happy with that answer or analogy. So, I dug a little deeper and a little closer to home. Let’s look at traditional computer worms and viruses. The kind that can really mess with your local computer. How are those delivered? How do they get on my computer? Let’s define what worms and viruses do.

Quick Computer Lesson

Computer Worm: a standalone malware computer program that replicates itself in order to spread to other computers. Computer Worm – Wikipedia

Computer Virus: a computer program usually hidden within another seemingly innocuous program that produces copies of itself and inserts them into other programs or files and that usually performs a malicious action. Computer Viruses – Wikipedia

So how do you get this type of malware on your computer?

That’s a great question and one that’s hard to answer because malware distribution has gotten so sophisticated these days, it’s hard to tell exactly how your computer got infected. Certain delivery method culprits could be:

Phishing lure pages / Spear-phishing emails: You get an email from someone you know (or think it’s someone you know) and you click on a link. Same as if you go to a website you think you trust and click on a button/link.

Drive-by Infections: These are super dangerous because this means you just visit a malicious website and it can infect your computer. Just by being on that website for one second can deliver a payload that really inconveniences your life.

Using unsecured networks: We’ve come to expect free wifi everywhere we go, but beware because that means anyone else (especially unscrupulous users) have access to it as well. And the good hackers can gain access to your system through all the various software tools available and then crack passwords with ease with all the various software tools available!

Using an infected flash-drive: Ok, this one is unlikely, but if you’re a student and need to back up your files and you use a flash-drive your friend gave you—it can potentially be dangerous. Just buy new ones that are sealed in their packaging!

Downloading music, movies, and other stuff illegally: I’m sure people still do this, but it’s a sure-fire way to get infected with malware. Be careful what you download and what source you use to download it from.

Social Media: Social media platforms are our best friends sometimes, but they have lots of things that we click on from interesting top stories, to party invites, to alluring ads. These can all be triggers for malware distribution and according to Business News Daily is now the world’s largest attack surface.

Mobile Apps: Yup, now your mobile phone can be hacked! Cybercriminals have created apps as “utility” apps and when unsuspecting users download it, it fills their phone’s memory with malware. The next time that phone gets connected to a computer, for whatever reason (maybe just to charge it), the computer gets infected with malware.

As you can see, there are a myriad of ways to get infected with malware. And that malware can come from a plethora of sources. Depending on how the virus, the worm, or malware code is written, it can spread like wild-fire infected everything in its path from phones to connections with local computers over unsecured networks to other local computers and servers.

And if we think about this concept, at its very foundation it’s considered cross-platform contamination. But let’s look at viruses on a granular level. What happens when the virus infects my computer? How does it spread?

A virus has several moving pieces to it, all of which help with its end goal of inflicted damage.

Infection mechanism – this is how the virus spreads or propagates. There’s something called a ‘search routine’ which locates files/disks to target, then copies itself into those files/disks.

Trigger – known as a logic bomb, it’s the piece of the virus that activates the payload and can be done through a number of different actions or executions, such as on a certain date or time, the presence of another program, disk capacity, or a simple click.

Payload – the code/data that performs the purpose of the virus, often times the malicious or harmful activity.

If we look at these pieces, we’ll see that a virus on a local computer will move throughout that entire computer replicating itself in different files, disks, programs, applications and so on, delivering a payload.

So cross-site contamination is quite similar. A server is really just a computer. Let’s dive into that…

Cross-site contamination with a side of fries, please…

Going back to our food analogy, let’s say you go to your favorite fast food restaurant. And let’s say you order a big juicy burger with a side of fries. Only unbeknownst to you, that burger is contaminated, does that mean the fries are too? Well, if they’re served to you in the same bag, then yeah, it could be!

If you take a server, let’s say a shared hosting account with any of the big boys out there, and you currently have 5 sites on that shared hosting account. What’s the likelihood of a site getting infected? Well… if you don’t have any security measures in place, then the answer is very high. But let’s say you do have security measures in place. Let’s say you have a website application firewall and you scan every day for malicious activity. But let’s say you only have those security measures on the two most important websites on that server. The other 3, you could care less about!

Why this train of thought sucks:

If you go back a little and look at cross-platform contamination and contamination of files on your local computer, cross-site contamination works the same way. You’ve got 5 sites that are sitting on the same shared hosting account and only two of those sites have a Firewall. That means that the other 3 do not! So they are still susceptible to brute force attacks, DDoS attacks, malware distribution, and every other form of malicious activity…essentially making every site on that server susceptible.

Once a hacker gains access to one of your sites that sit in your shared hosting account, realistically they can do a lot of damage. They can add files which can change permissions, inject code that locks you out of your site, and they can take over your entire web server and damage the sites that “were” protected, or so you thought.

What to do??

Well, a few things. One—you can have security measures across the board. If 5 sites are on a server, make sure you have a Firewall for each of them, make sure you monitor each of them. Or you can isolate sites, which is another avenue. Maybe it’s more cost-effective for you to take those two (important) sites and move them to their own environment. You can clean up your server, I totally recommend doing this. Take a lazy Sunday and look at how many sites you have on your server. I’m talking about all of it – the subdomains, sub-directories, the development sites, and so on.

The more sites you have sitting on your server, the more susceptible you are to malicious activity. If you have 20 sites, and 1 is protected, there’s a good chance it’ll be compromised. Even if you have 19 that are protected, there’s still a chance you could be compromised. Albeit, it’s a small chance at that ratio, but it is still there.

People just expect their sites to be safe, and I’ll admit, I did for the longest time too! But that’s a far cry from reality and one that’s hard to sell.

I work for Sucuri, one of the best website security companies on the market today (probably the best – and yes, I am biased!). But I sell web products to agencies and enterprise level clients. It’s not so difficult to sell them on our products. Sucuri’s products, they just work and very well at that! What I need to sell people on is website security as a whole, which is much more difficult than you may realize.

Let me break things down.

There are all these moving pieces to the web, correct? Yes, there are. Even more so at a granular level when you look at company’s servers or hosting environments, file structures and setups, their clients and others who have access to these sites, the sites themselves and all their vulnerabilities. Not to mention the hackers, who rarely leave a trace and rarely get caught and rarely get punished for it.

Let’s start with different environments. There’s a great analogy I use for shared hosting, VPS, and dedicated accounts.

Shared hosting – this, essentially, means that you are sharing resources with everyone else in that environment, like CPU time or memory space. It’s like living in an apartment complex and sharing the pool, laundry, and parking lot with your neighbors. You still have your own place, but if the laundry is tied up, you’ve got to wait!

VPS (Virtual Private Server) – this is like living in a condo, because you’re still sharing resources that are outside of your condo, like parking space, but you’re ultimately responsible for things inside your condo. So, in a VPS environment, there are still shared resources, but portions of those resources are dedicated to each individual VPS.

Dedicated server – this is like owning your own home. You’re responsible for the upkeep, but you also have access to all the resources, and no one shares them with you.

So, this is a very simplified version of server environments. Nowadays, people use the term ‘server’ and the term ‘hosting’ in somewhat the same way. Years ago, when someone said we host internally, it usually meant that they had physical servers inside their offices where they would manage them and actually host their sites on those servers. And for those of you who don’t know, a server is just a computer, with a little different hardware on it (even though, a desktop computer could run a server) – I know, confusing!!!

Hosting is done by a number of different providers like WP Engine, 1and1, GoDaddy, Pantheon, and so on. They have the hardware and resources to handle many different types of platforms (or a specific one), and they also make things easy for people to manage their environments through something called a C-Panel or Control Panel. It’ll give you access to your domains (if you’ve pointed them from your registrar or used the hosting company to buy the domain) and let you change the directory path and DNS settings, things like that.

Now with most servers, there will be server-level firewalls set up with the infrastructure, but that means that it’ll still let in web traffic, which is what we need a lot of protection from. Port 80 (HTTP) and port 443 (HTTPS) traffic can let in a lot of different activity (good and bad). This is how your visitors reach your site, through one of those two ports depending on whether or not you have an SSL certificate. So, there are many different ways a website can get compromised.

Software vulnerabilities

XSS (Cross-site scripting)

Backdoor Injections

SQL Injections

SEO Spam

DDoS (Distributed Denial of Service) Attacks

Brute Force Attempts

And the list goes on…and on…and on…

But you have to be aware of this stuff, and keep in mind that a lot of these attacks are automated. Some may be done manually by a bored teenager sitting at home in front of his computer. But for the most part, they’re automated attacks. And keep in mind there are attacks of opportunity (which we are all susceptible to) and targeted attacks, which are usually for the bigger brands and companies, but make no mistake if you engage in controversial content on your website (like religion or politics), you can very well be targeted too!

There are a few different reasons why someone would want to attack your site or gain access to it. It’s not just money, but that can be part of it.

Revenue – and I’m not talking about people trying to steal credit card info (although, that happens all the time), but if you don’t do anything with e-commerce, hackers can still profit off of your website. Imagine a hacker injects your site with malware and then your mom visits your website. She unwittingly downloads something that your site told her to download (because she trusts you and what you put on your website) and then four hours later she has no money in her bank account. BOOM!! Oops… That’s what I’m talking about. And there’s also SEO spam. Hackers who use your site to redirect traffic to their pages to make money by inserting links, or keyword stuff your site (which will send your rankings through the floor – and it’s hard to recover from) to get better rankings in the short term and make money off of your audience.

Resources – this is another big one. Maybe the hackers don’t want money, but they may want your resources. Things like bandwidth or CPU. They can build a network off of your system and lease it to others. Now hackers can take your resources and use them to attack other unknowing parties, without YOU (the website owner) even realizing it. Scary, right??

Lulz – yup, that’s right, lulz!! What is that you ask? Well…it’s just for the hell of it! Fuck it, let’s try it! I want to see if I can do this. Again, it could be some bored teenager just sitting around chatting on the security forums. Someone tells them about a tool to drop scripts in a website via a contact form, and they want to see if they can do it and gain access. Then once they do, who knows what could happen!! Be careful of this, because this is really hard to mitigate against. Get a WAF (website application firewall).

We have to be careful of things like Ransomware (holding a website owner’s site hostage) or Malvertisements (malicious ads) and there’s no one right way to do this. It really starts with education, so if you’re reading this post, kudos!

Some thoughts on general security

In order to keep your site (and your visitors) safe, you’ll need to explore general website security. Starting with monitoring and a firewall. Sucuri offers an awesome monitor/firewall package, our Website Security Stack. But if you can’t afford that, then look at all the free stuff out there.

You can use our Sitecheck to see if there is malware on your site. But keep in mind this only scans remotely, it can’t check the database.

You can learn how to harden WordPress. Which is basically locking a few things down like access, having containment, certain configurations.

Or you can take a look at OWASP and ModSecurity – which are open source and free to use, you just have to configure the firewall yourself, and that can get confusing!!

The Frustration of Website Security

And this is the frustration of website security—is that there is no 100% solution out there. I don’t think there ever will be! Ever! The reality is is that the landscape of websites and their environments change so frequently that once a solution had been produced, hackers have already found a solution of their own to beat it. And that’s the continual cycle.

So educate yourself and the people around you. If you own a website, you not only have a responsibility to it, but to your audience, and the web in general.

As I continue on my first week at Sucuri, the global website security company, I realize that there are things I really need to fix in relation to my own websites. I have a few different properties that I manage, Being AJiLe is just one of them, but I do have a small business website, several blogs, my music, and my portfolio all hosted with 1&1 hosting (which is a shared account, not ideal!).

The more I move through my training plan that’s been outlined for me, the more I realize the importance of security, even if you have a simple blog that’s read by 7 people out there. Which is probably how many regular readers I have.

This is going to be a series on web security. And I’ll tag it as such, but I wanted to quickly start off with super basic fundamentals on how the internet and world wide web work. Because make no mistake—those are separate things!! Yes, the web is NOT the internet, it’s a part of the internet, but not the same.

The Internet: a massive networking infrastructure that connects millions of computers globally.

The World Wide Web (aka The Web): a way of transmitting and receiving data using certain protocols, like HTTP (Hyper Text Transfer Protocol—the standard protocol for transferring data over the web).

I know, right? You thought it was the same thing. Yeah, I kinda did too, just don’t tell anyone.

So, with that in mind, there are two different components that are imperative to communications over the web: clients and servers. Clients are pretty much you right now. If you’re reading this post on a Mac, or iPhone, or PC — then your device is acting as a client. A client really is any device that requests and renders web content.

On the flip side, there needs to be servers, which are applications that deliver web content to clients. Now technically, and this is where it gets tricky, but you could potentially turn your computer into a server with the right type of software installed. And you could deliver web content if you truly wanted to.

Now let’s take a look at a URL, also known as a Uniform Resource Locator, it’s that link that you type into your address bar, which I’m sure you all know. But! Do you know how it works? Cause it’s pretty cool! Well let’s break it down… When you type a link into the address bar it goes to locate the requested content, which will then pass through a DNS (or Domain Name Server) which translates that URL into an IP address. All domains have their own IP Address, something like 273.84.97.554, but if you had to remember that every time you wanted to find it, that would suck! And not be very fun! So URL’s were invented to be a human-readable way to remember web addresses. Pretty neat, huh?

There are a lot of different protocols for transmitting/transferring data over the web, but here are a few:

HTTP – Hyper Text Transfer Protocol — the standard protocol for transferring data over the web. It’s considered a “stateless” protocol, which means that once the connection is made, it’s forgotten about which makes it great for the web as not to use a continual amount of bandwidth.

SMTP – Simple Mail Transfer Protocol — standard for sending and receiving emails, but if you want encrypted emails you’ll need to enable PGP (or Pretty Good Privacy – I’ll write about this in another post ’cause it’s pretty dang cool. I sent my first encrypted email just the other day!)

Browsers

Now, browsers pretty much have all the same components across the board. That is not to imply they’re equal. I very much like Chrome, but I know others who love Firefox and Safari. However, I don’t know many people who like Internet Explorer, I know people who use it, but I don’t think they like it!

COMPONENTS OF A BROWSER:

Browser User Interface: this is stuff you see – the bookmarks bar, address bar, the window, visual elements, etc.

Internal Engine: this is what you don’t see that directs communication across the various components.

Rendering Engine: now this is different for each browser. Like Firefox uses the Gecko rendering engine and Chrome uses the Blink rendering engine. That’s why when web dev shops build a website they have to test all these different browsers to make sure things are rendering properly, it’s a pain, but these are getting more standardized!

Networking: the protocols used.

Data Storage: internal data storage and session management capabilities, usually in the form of cookies.

Web standards are one of those things that really has evolved in a short amount of time. Back in the 1990’s there was a browser war going on between Netscape Navigator and Internet Explorer, it was a war for market dominance! But what happened was that each browser (or team) kept coming out with proprietary features making website building very difficult!

So, a group of web developers and designers got together and started W3C, the World Wide Web Consortium, to implement “recommendations” to each company making browsers to make things easier for the web development community. It promoted and encouraged the use to standard-compliant browsers. Because in the wild west world that was the web in the 90’s, it really needed some law and order. And it got it. Now we have standards and most companies follow them. I’m a big fan of standards, I think they’ll continue to evolve and get better.

You can always check out the Web Standards Project to see the cool things they continue to do. Today, the big thing in web standards is accessibility. So, if you have a site, try and make it web accessible. Meaning putting alt image text tags, using skip links, etc. To learn more about web accessibility, check out The A11Y Project — be a part of it!

That’s what I got for you on this post, but have no fear, I will be back next week to tell you more of my exploits and education as I continue down the journey to be the most knowledgeable web security consultant out there!

For those of you who are in the business of talking tech, you’re probably familiar with certain web terms like SEO, Full Stack Developer, Adwords, HTML, FTP, Above the Fold, CSS, etc. I’ve put together a list of the most common terms used when talking about everything tech from computer programming to open-source platforms to blogging. I’ve tried to make them as relatable as possible so you can explain these terms to your cyberspace-challenged family at the next Thanksgiving dinner and sound super tech savvy. Terms, acronyms, phrases, and slang are all in the mix, alphabetically ordered for your convenience. If you need more clarification, fill free to reach out!

A:

Above the Fold – this refers to anything that can be seen on a webpage without having to scroll down. It stems from the newspapers where anything in the top fold was considered prime real estate for content and ads.

Adwords – this is the most commonly used ad service powered by Google. It allows account holders to bid on certain keywords relevant to their website and create ads which appear on SERPs. It places ad copy usually at the top or to the right of the search engine result page (SERP). If you look closely at the first two or three results on your next search, you’ll see a little yellow box that says “ad” directly to the left of the link, that is if you use Google. Bing has its own ad service, surprisingly called Bing Ads.

Adsense – this is a little different than Adwords, but connects with it. Adsense allows bloggers and other webmasters to display ads on their sites which can generate income through a CPM (Cost per impression, aka PPM) and CPC (Cost per click, aka PPC). An account holder can get paid through Adsense by taking the ads from Adwords that companies create and pay for and displaying it on their websites. I know this is a little confusing, but all you need to know is Adwords costs money, Adsense can make you money.

Analytics – services that generate statistics about a website’s traffic, patterns, and has the ability to measure conversions. These tools basically track activity on a website.

API – Application Programming Interface – it’s a way for one technology to interact with another technology. Like a Twitter API let’s developers incorporate Twitter data into a website or application, same thing with a YouTube API. This maintains a level of cohesion in the building process.

B:

Back End – refers to everything on the “back-end” of a website, basically what goes on behind the curtain. Back end functionality are the inner workings of a website or application. Also known as server-side, back end is the stuff you don’t see when you look at the webpage. (EX: Have you ever filled out a contact form online? Where does that information go and how does it get there? That’s back end!!) Back end may also refer to a person, he’s a back end developer.

Bandwidth – is a resource in use. If a website has millions of users viewing the site, it will be using a lot of bandwidth. Bandwidth can also be used to describe someone’s availability – a developer just finished their project and has some “bandwidth” to help out on different projects.

Beta – we always hear this product is currently in beta – that means it’s the first “live” phase of a website or a platform. The product is ready for use but the kinks are still being worked out and it’ll improve.

Black-Hat – used to refer to malicious hacking or aggressive SEO strategies.

Blog – if you don’t know what this is, you’ve got problems. But just so you know, blogs started as sort of an online journal and now blogs have turned into complex inbound marketing tools. The internet is like an ocean and companies use pieces of bait called content (blogs) to reel people in with.

Bounce Rate – used in analytics to represent the percentage of visitors to a particular website who navigate away from that site after viewing only one page. This is when visitors come to a website and then “bounce” off never going to another page than the one they landed on – hence bounce rate – a low bounce rate is usually good, a high bounce rate is usually bad – usually!!

Browser – this one’s easy. A browser is an application we use to surf the web. (EX: Chrome, Firefox, Safari, Internet Explorer (do people still use that, ha!))

C:

Caching – this is when your computer stores a copy of a webpage you previously looked at so it can deliver that page to you faster the next time you view it.

CDN – Content Delivery Network – CDN’s are normally for websites that have lots and lots of images, videos, and rich media. CDN’s will store cached versions of the website on different servers at different locations around the world. This enables the site to be served up quicker when trying to view it. Depending on your location, the server closest to you will show you the website.

CMS – Content Management System – software that makes the management of a website easier for those who aren’t developers. A CMS can have a number of different users, usually called admins, that access the website through a login portal. The user interface opens into a dashboard where admins can publish, edit, and update the website’s content. Examples of CMS’s are WordPress and Drupal, both open source!

This is the CMS view of the page you’re ready now!

Cookie – stored in your web browser, a cookie comes from a website you visited. When you revisit the same website, the cookie will send data back to the server to notify the website of your previous activity.

CRO – Conversion Rate Optimization – the practice of creating great experiences for a website user with the goal of converting them to paying customers.

CSS – Cascading Style Sheets – this is a stylesheet for sprucing up your website pages and making things look pretty. With a .css extension and linked from an HTML (seen below) page, it is the decoration of a website.

D:

Deep Web – a part of the internet that is not indexed by regular search engines. The internet is an ocean as in 90% of its contents are below the surface. For every page a regular search engine indexes, there are many more that are not being indexed. See TOR – the software for trolling the deep web.

DNS – Domain Name System – a unique user-friendly name that identifies a website, like beingajile.com and essentially converts the number of the IP address.

DOM – Document Object Model – let me preface this by saying this will be hard to understand! There are objects in an HTML page called elements, things like <title> and <header>, the DOM is basically a representation of the document (often times in the form of a tree) and determines how objects can be manipulated. It can be considered kind of a theory, and it’s technically an interface. Told you it would be hard to understand. Google it – I dare ya!

Domain Authority – honestly, no one really knows what this is. It’s a secretive algorithm that measures how a website will perform in search engine rankings. Moz has the info you need on Domain Authority.

Drupal – free, open source content management system used to build websites and online communities leveraging modules for functionality.

E:

Element – the components in HTML, they represent content and are wrapped in tags EX: <p>Paragraph tag</p>, <h1>Heading with the most weight</h1>, <h6>heading with the least weight</h6>, <img src=”this shows an image” />

F:

Favicon – these are the tiny little images and icons that are displayed in the tab of a window next to the title of the actually webpage.

FTP – File Transfer Protocol – a way for files from one computer (usually a personal computer) to be transferred to another computer (usually a server) to be viewed on the internet.

Framework – in development, a framework helps by having a defined collection of tools to pull from for creating websites and web apps. Common activities (e.g. – fixed layouts, responsive markup) are put together and available for use instead of building something from scratch.

Front End – development that involves everything a user sees on a website, sometimes called client-side. Also refers to a person, she’s a front-end developer.

Full Stack Developer – a developer who knows both front-end and back-end development, these developers are extremely skilled and demand a high salary!

G:

GIF – a format file type used most times for animated images and graphics.

Git – a version control system which enables developers to work on projects simultaneously from different computers and store revisions of development history. It’s really good for holding developers accountable!

H:

Hack – there’s two meanings for this. One – is the traditional meaning where your computer gets hacked by a hacker for profit, gain, or notoriety. The Second – is when files are customized by a programmer, but not coded properly. You’ll often hear, “the core files are so hacked we’d have to start from scratch.” – this could mean that the files were hacked by a hacker, but it probably means that some developer who had access to those files changed the code to get the website or program to run the way it needed to run, but they didn’t use best practices.

High-level – this is a business term which means very basic, an overview, not specific or detailed. Your boss comes to you and says, “I’d like a high-level overview of your department’s business objectives for Q4 this year, just something simple.”

HTML – Hyper Text Markup Language – one of the first languages in website building, it leverages components known as elements wrapped in tags (surrounded by angle brackets shown here – <title>My Website</title>) to render certain types of text and images in a file with the extension .html. When rendered on a webpage, the above example would only show My Website. It is the skeleton of pretty much any website and contains different types of content.

HTTP(S) – Hyper Text Transfer Protocol (Secure) – it’s basically a set of rules for transferring information over the internet between browsers and servers. HTTPS is the secure transfer over an encrypted connection.

I:

IP Address – Internet Protocol Address – this is the number associated with a web address or computer.

J:

JS – JavaScript – a scripting/programming language used to create dynamic websites. It can handle user events and movements, alter content, and make for an overall great user experience. JavaScript has become very popular these last few years.

jQuery – a JavaScript library to simplify creating animations and handling events. It’s the most widely used JavaScript library today, and it’s got a great API.

K:

Keyword – any term, phrase, or word typed into a search query in a search engine that shows results.

KPI– Key Performance Indicators – companies use KPI’s to gauge and compare performance, they usually come in the form of some type of data-driven metric like social media reach, profits, or analytics.

L:

Landing Page – a webpage built within a website for the purpose of being “landed” on, usually from email marketing or social media. A landing page is built in hopes of converting users into customers.

Link Bait – content on a website that other sites link to because they find it interesting, unique, funny, and want to link to it.

Link Building – getting other websites to link to your website in hopes of improving your own ranking in a search engine.

M:

Markup – another way to say code, HTML is a markup language. See also syntax.

Meta – often heard in line with the word data, metadata is literally data about data. It helps search engines read parts of your website to determine what type of data it is.

Microsite – this is an individual website with its own domain/subdomain and as its own entity, but often times associated with another larger website. A microsite is usually used to showcase some type of event or new product.

Mockup – a design that shows a user what a website will look like without having to build any of the functionality.

MVP – Minimum Viable Product – for a website, the MVP has just those core features that allow the site to be deployed live. It’s the absolute bare minimum a website can be and still be used.

N:

NAP Consistency – Name, Address, Phone Number – a company’s NAP should be the same across all different local listings and other listings. This will help with local SEO.

O:

OOP – Object Oriented Programming – is a fundamental of computer programming that centers around objects and the methods or functions that control them.

OS – Operating System – are you using a Mac, Windows, or Linux OS? The iPhone’s operating system is iOS, go figure!

P:

Panda – this was an update to Google’s algorithm that aimed at lowering the rank of low-quality sites aka “thin sites”, and return higher quality sites at the top of the SERP.

Penguin – this was another update to the Google algorithm that aimed at decreasing search engine rankings for those sites that were still practicing Black-Hat SEO tactics.

PHP – PHP Hypertext Preprocessor – what?!? yes that first P stands for PHP, it makes no sense, I guess HP was taken! This is a programming language that is normally used with a database like MySQL to build dynamic websites and web applications. Over 80% of the web is written in PHP.

Pogo-sticking – users who search for a keyword and click on the first result they see. Then they don’t find what they want and hit the back button to the results page and click on the second result they see. Then they don’t find what they want again, and this can go on and on, hence the pogo-stick.

Q:

Query – any question, whether that’s searching in a search box or querying a database to get back info from that database, a query is simply a question.

R:

RFP – Request for Proposal – this is a business term, but it’s when companies contact a web agency in hopes of finding a solution to their web challenge. If a company wants to build a website or do a redesign, they’ll put together an RFP (which basically describes what they’re using now and what they’d like to change about it – high level stuff) and send it to a web firm to get a proposal.

Rich Media – this can be different things, a few examples are images, videos, and animations that usually involve some type of user interaction. Or it can be an image, video, or interactive advertisement.

River – on a blog, it’s the main section of blog posts, not the sidebar.

RSS – Really Simple Syndication, actually it’s Rich Site Summary – RSS feeds allow a webmaster to syndicate someone’s content from a blog or news source to their own site and link back to that blog or news source, the feed will automatically update with any new posts.

S:

Scope Creep – adding incrementally to a project plan or statement of work (SOW), and realizing that the project plan has gotten way too big! The creep refers to adding small things (features, functionality, etc.) to a project and then realizing that the scope (what the project entails) is way over budget or the timeline’s too short.

SEO – Search Engine Optimization – for lack of sounding obvious, this means optimizing a website for the search engine. It’s an organic (meaning free) process of affecting a website’s visibility in SERPs. The strategy for this is extensive and constantly changing, you can check out some of my previous posts on SEO and Search Engines to get a basic look.

SERP – Search Engine Results Page – it’s the page that has all the results on it after you enter a search query and hit enter.

Server – simply put, a server is a computer, but it’s a big one that houses a bunch of different websites.

Sitemap – this is a list of all pages within a website that can be crawled by spiders or by users, normally showing the taxonomy of a website.

Spamdexing – slang term for the use of Black-Hat SEO strategies like invisible text (hiding text between the markup and rendering it invisible), keyword stuffing (stuffing a webpage full of the same keyword), and doorway pages (landing on a page and then suddenly being redirected to another page) for the purposes of high visibility in search engine rankings. This is a very bad thing to do and it’s like committing SEO suicide.

Spider – a program designed to crawl (read) web pages.

SOW – statement of work – a document that tells the client what you plan on doing for their project.

Syntax – properly structured code.

T:

Table – a slang term for putting something on hold. EX: “I’ve got a lot on my plate right now, so why don’t we table this month’s content strategy and circle back at a later date.” I hate this term!!

Taxonomy – this is the procedure of organizing and categorizing the different web pages on a website. A website’s hierarchy.

TOR – The Onion Router – this is a free software for online anonymity. It let’s users surf the web much like Google or Bing does, but with no threat of placing cookies on your computer or tracking your movements. TOR is often used to surf the Deep Web.

U:

UI/UX – User Interface / User Experience – UI is what we use when we’re doing some type of action online (e.g. – viewing a website, purchasing an online product). UX is the feeling we get from doing those actions.

URL – Uniform Resource Locater – URL’s are a website’s unique address so that it can be found online.

Usability – criteria that assesses how easy a user interface is to use including learnability, efficiency, memorability, errors, and satisfaction. The Nielsen Norman Group has a great post on this topic – Usability 101

User-friendly – this just means that something is easy for us humans to understand! EX: beingajile.com/blog is much easier for us to understand than beingajile.com/wp/13286-aXeS3.3428.php

V:

Virus – much like a cold virus or the flu, a computer virus is a malicious program that likes to harm and reproduce in other hosts (computers).

W:

Webmaster – any person who develops or controls a website.

Widget – a small piece of functionality in WordPress usually found in the sidebar or footer areas.

Wireframe – this is kind of like a blueprint for a website, often done with boxes, it represents a visual framework.

WordPress – an open source content management system designed for developers and non-developers. It has a vast community of developers/non-developers who regularly contribute to making it the best blogging platform out there. It utilizes plugins which are pieces of functionality that help the end user accomplish something (e.g. – embed a twitter feed). This is such an immense platform that the codex has got all the documentation you need to get started.

X:

XML – Extensible Markup Language – defines a set of rules for encoding documents in both human-readable and machine-readable format, it’s also designed to carry and store data.

Y:

Z:

I couldn’t find anything for Y and Z, but I’m sure this will be a constantly updated list. I literally keep a black book of web terms right next to my computer so that when I hear someone say a term I’m not familiar with, I write it down. Please feel free to reach out if you have any input or want to know something more about a certain term. Hope this was helpful.