Skip to content

Common Web Security Vulnerabilities

Published: at 04:07 PM (2 min read)

Common Web Security Vulnerabilities

Cross-Site Scripting (XSS)

Attacker injects malicious JavaScript into your site that executes in the victim’s browser.

Goal: steal session cookies, hijack accounts, deface pages, or perform actions as the victim.

Attack Scenario

Prevention

  1. Sanitize user input before saving or rendering
    • Use libraries: DOMPurify, sanitize-html, xss
    • Escape HTML characters when rendering
  2. Set Content-Security-Policy (CSP) header
    • Use helmet middleware
    • Restrict script sources: script-src 'self'
    • Blocks inline scripts and external malicious sources
    const helmet = require("helmet");
    app.use(helmet());
    

Cross-Site Request Forgery (CSRF)

Attacker tricks victim’s browser into sending unauthorized requests to your site while the victim is authenticated.

Exploits: browsers automatically attach cookies to same-origin requests.

Attack Scenario

Prevention

SQL Injection (and Other Injection Attacks)

Attacker injects malicious code into input fields that gets executed by the database.

Attack Scenario

Vulnerable code:

const query = `SELECT * FROM users WHERE username = '${req.body.username}' AND password = '${req.body.password}'`;

Attacker enters in username: admin' -- Resulting query:

SELECT * FROM users WHERE username = 'admin' --' AND password = '...'

-- comments out the rest → logs in as admin without password.

Prevention

Summary

VulnerabilityGoal of AttackerMain DefenseRecommended Tools
XSSExecute JS in victim’s browserSanitize input + CSPDOMPurify, helmet
CSRFPerform actions as victimCSRF tokens + SameSite cookiescsurf, express-session
SQL InjectionExecute arbitrary SQLParameterized queries / ORMPrisma, TypeORM, mysql2/pg

Implement these defenses from the start — security is not optional.


Previous Post
Child Process vs Worker Threads in Node.js
Next Post
Design Patterns in Node.js