jan-karel.com
Home / Security Measures / Web Security / Client-Side Security

Client-Side Security

Client-Side Security

Client-Side Security

Code With Boundaries, Production With Confidence

Web risk is rarely mysterious. It usually lies in predictable mistakes that persist under time pressure.

For Client-Side Security, the gains lie in context-bound output, browser restrictions, and secure frontend baselines.

This makes security less of a separate afterthought and more of a standard quality of your product.

Immediate measures (15 minutes)

Why this matters

The core of Client-Side Security is risk reduction in practice. Technical context supports the choice of measures, but implementation and assurance are central.

Defense: the complete client-side security checklist

Measure Protects against Implementation
CSRF tokens CSRF Token per session in every mutating form; server-side validation
SameSite cookies CSRF SameSite=Strict or Lax on session cookies
CORS policy CORS misconfig Explicit whitelist of origins; never reflected origin
X-Frame-Options Clickjacking DENY or SAMEORIGIN header
CSP frame-ancestors Clickjacking frame-ancestors 'none' or 'self'
Authorization checks IDOR Server-side check: "is this user allowed to view this object?"
Content-Security-Policy XSS, data exfil Restrictive CSP; no unsafe-inline
Cookie flags Session theft Secure; HttpOnly; SameSite=Lax

Let's pause here and consider the fact that most client-side vulnerabilities we discussed in this chapter can be prevented by setting a few HTTP headers. A few lines of text. That's it. No complex architecture, no expensive tooling, no team of ten security engineers. Just headers.

But no. We prefer elaborate "security awareness training" where someone from HR presents a PowerPoint about the importance of "cyber hygiene," while the production API at that very moment reflects every Origin header like a parrot that just learned what CORS is. The training costs fifty thousand euros per year. The CORS fix costs three lines in nginx.conf. Guess which one we choose.

Summary

The browser is a well-meaning but naive ambassador. It follows the rules it is given, but it cannot judge whether those rules are correct. CORS misconfiguration tells it that every foreign delegation is trusted. CSRF lets it sign documents on behalf of someone else. IDOR opens every door if you name the right room number. And clickjacking places an invisible layer over everything.

The defense is not complicated. It is even embarrassingly simple. But "simple" and "done" are two very different things.

In the next chapter, we shift our attention from the browser to the gate: authentication and session management. Because if the door is open, it no longer matters how good your windows are.

Op de hoogte blijven?

Ontvang maandelijks cybersecurity-inzichten in je inbox.

← Web Security ← Home