Tutorial 1: Injection, XSS, CSRF, and Authorization

Unit 6 · Security and privacy

Objectives

Authentication answers who a user is; authorization answers what that user may do. Treat browser input, cookies, headers, uploaded files, and database values as untrusted until validated for their intended context.

// Safe principle: keep data separate from markup and queries.
const safeText = document.createTextNode(userInput);
// Server: use a parameterized query, not string concatenation.

SQL injection is prevented with parameterized queries. Cross-site scripting (XSS) is reduced by context-aware output encoding and safe DOM APIs. CSRF defenses use same-site cookies, anti-CSRF tokens, and appropriate method design. HTTPS protects data in transit but does not replace authorization.

Exercises

  1. Threat-model a profile-edit endpoint.
  2. Identify trust boundaries in a browser-to-database request.
  3. Write authorization rules for student and administrator roles.

Self-check

  1. What is the difference between authentication and authorization?
  2. Why is HTTPS alone insufficient?
  3. Why encode output for its context?

Self-Check Quiz

1. Which defense separates SQL structure from user data?

AnswerParameterized or prepared statements.

2. Who should enforce authorization?

AnswerThe server must enforce it; hiding a client-side control is not security.

Homework

  1. Produce a threat model for a course-registration feature.
  2. Specify defenses for injection, XSS, CSRF, session theft, and unauthorized access.
  3. Review your design for unnecessary personal data collection.
Sample answerA strong answer identifies assets, actors, trust boundaries, and abuse cases. It uses prepared SQL, output encoding, secure same-site cookies, CSRF protection for state-changing requests, server-side role checks, HTTPS, rate limits, and data minimization.
👤