📚 College Credit Guide ✓ UPI Study 🕐 9 min read

What Are SQL Injection XSS and CSRF Attacks?

This article explains SQL injection, XSS, and CSRF with simple examples, clear differences, and the main defenses students should know.

US
UPI Study Team Member
📅 June 16, 2026
📖 9 min read
US
About the Author
The UPI Study team works directly with students on credit transfer, degree planning, and course selection. We've helped thousands of students figure out what counts toward their degree and how to finish faster without paying more than they have to. This post is written the way we'd explain it to you directly.
🦉

SQL injection, cross-site scripting, and cross-site request forgery are three common web application attacks, and each one breaks a site in a different way. SQL injection targets the database, XSS targets the browser, and CSRF targets a logged-in session. That split matters because the fix changes too. Think like a student in a cybersecurity course or a junior web developer on a college project. A form field, a search box, or a button click can turn into a real attack path if the app trusts user input too much. One careless line of code can expose names, emails, grades, payment records, or admin settings. That is not drama. That is how these bugs work. The pattern is simple once you see it. SQL injection happens when user input becomes part of a database query. XSS happens when a site sends unsafe script to someone’s browser. CSRF happens when a browser sends trusted cookies with a fake request the user never meant to make. Students often mix them up because all three start with a weak web app. Still, the attacker’s goal differs in each case, and the defense changes from query handling to output encoding to anti-forgery checks. If you can spot where the attack lands, you can tell the difference fast.

Steel framework cabinets housing servers networking devices and cables in contemporary equipped data center — UPI Study

Which Web Attack Is SQL Injection?

SQL injection lets an attacker slip harmful input into a database query, so the app runs the attacker’s words as part of SQL instead of treating them as plain data. That can expose a user table, change a password, or delete records in seconds if the app builds queries the wrong way.

Picture a login form on a campus portal in 2026. If the code says something like “find a user where name equals this input,” and it pastes raw text into the query, the attacker can add SQL code that changes the meaning of the whole request. The catch: The user input becomes code, and that is the whole mess. A search bar, URL parameter, or API field can all carry the payload if the app does not use parameterized queries.

The danger goes past one bad login page. A successful injection can read email addresses, student IDs, grades, payment records, or admin flags. It can also change data, which is worse in some cases because a silent edit can sit in the system for weeks before anyone spots it. SQL injection still scares people for a good reason: it looks small, but it can hit the whole database.

Students should watch for places where a site asks for text and then uses that text to build a query in a hurry. The classic warning sign is any code path that mixes user input directly with SQL keywords like SELECT, WHERE, or ORDER BY. A secure app on a 3-tier stack should separate data from commands every time.

The best defense is boring, and that is a compliment. Use parameterized queries, stored procedures with care, and least privilege so the app account cannot do more than it needs. A read-only report tool should not have DELETE rights. That one rule blocks a lot of damage.

How Does XSS Attack a Web App?

Cross-site scripting, or XSS, runs malicious script in a victim’s browser because the site fails to filter or encode output before it sends the page. The attacker does not need the database here; the browser becomes the target, and that makes XSS feel sneaky in a way SQL injection does not.

A comment box, a forum post, a profile field, or a search result page can all become a trap if the site echoes back raw HTML or JavaScript. If a site stores the bad text and shows it to 500 users, that is stored XSS. If it reflects the script right away from a search field, that is reflected XSS. DOM-based XSS happens when page code on the client side writes unsafe text into the page, and that mess can start with one careless line in 2024-era front-end code. Reality check: One bad comment can hit 1,000 visitors if the page shows it publicly.

The damage often starts with session theft, fake buttons, or a page that looks normal but behaves like a scam. If the attacker grabs a session token, they can act like the user until the token expires or the site logs them out. That is why XSS hits trust so hard. People stop clicking, and once trust breaks, the app feels dirty.

A lot of students miss the difference between input and output here. The input can look harmless; the output turns dangerous when the site fails to encode it. That is the ugly part. A filter that blocks one bad word does not fix bad output handling.

Good defenses include output encoding, input validation, and a strict Content Security Policy, or CSP. You also want to limit where scripts can load from and keep template engines from rendering raw HTML unless the code truly needs it. The page should treat text like text, not like code.

Introduction To Cybersecurity UPI Study Course

Learn Introduction To Cybersecurity Online for College Credit

This is one topic inside the full Introduction To Cybersecurity course on UPI Study — a self-paced, online class that earns real college credit. Credits are ACE and NCCRS evaluated and transfer to partner colleges across the US and Canada. Courses start at $250 with no deadlines and lifetime access.

Explore Cybersecurity Course →

How Does CSRF Trick Logged-In Users?

Cross-site request forgery, or CSRF, tricks a browser into sending a request the user never meant to send, but it only works because the user already has a trusted login session. The browser sends cookies automatically, so the trusted site thinks the request came from the real user.

That is the whole scam. An attacker does not need to steal a password in the classic case. They only need the victim to visit a page that makes the browser fire off a hidden request to a site where the victim is already signed in. If the bank, email app, or school portal accepts that request without a CSRF check, the action can go through in under 1 second.

CSRF is not the same as XSS, and students blur them all the time. XSS runs script inside the trusted site’s page. CSRF abuses trust in the browser’s cookies and session state. One attack injects code into a page; the other forges an action against a page. That difference matters a lot when you debug a real app.

A forged request can change an email address, reset a payment setting, add a new shipping address, or even change a password if the site skips extra checks. What this means: A user can lose control of an account without seeing a fake login screen. I dislike CSRF more than people expect because the attack often looks like normal traffic in server logs.

The best defenses are anti-CSRF tokens, same-site cookies, and reauthentication for sensitive actions. A password change page should ask for the current password or a fresh 2-step check, not just trust one cookie from a 14-day session. That extra step blocks a lot of quiet abuse.

How Can You Tell These Attacks Apart?

These three attacks all hit web apps, but they land in different places. SQL injection attacks the database query, XSS attacks the browser, and CSRF attacks a trusted session. If you mix them up, you will pick the wrong fix and leave the hole open.

ThingSQL InjectionXSSCSRF
Where it landsSQL queryBrowser pageLogged-in request
What gets abusedRaw input in SQLUnsafe output in HTML/JSCookies and session trust
Attacker goalRead or change dataRun script, steal sessionTrigger unwanted action
Common signsOdd errors, data leaksPopups, page changesAccount change without consent
Main defenseParameterized queriesOutput encoding + CSPAnti-CSRF token

The cleanest clue is the target. If the database gets hit, think SQL injection. If the victim’s browser runs code, think XSS. If a signed-in user gets tricked into sending a request, think CSRF. That split saves time during a security review.

What Defenses Stop SQL Injection XSS CSRF?

Three attacks, three defense sets. Parameterized queries stop SQL injection, output encoding blocks XSS, and anti-CSRF tokens stop forged requests. A site that skips any one of these can still get burned, even if the other two look solid.

Frequently Asked Questions about Web Attacks