Do not store bearer tokens, refresh tokens, or session secrets in `localStorage` or `sessionStorage`: JavaScript can read them after an XSS, and they persist beyond the page in ways that increase exposure. Prefer a server-managed session or token in a cookie with `HttpOnly`, `Secure`, and an appropriate `SameSite` setting. The browser then sends the auth cookie without Angular reading the secret. For same-origin requests, normal `HttpClient` requests send the cookie. For a separate API origin...
Scanned 9/5/2026
Install to Claude Code
npx -y skills add HoangNguyen0403/agent-skills-standard --skill angular-security --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Angular Security?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/hoangnguyen0403-angular-security-4d60f9df)More formats (shields.io, HTML) on the badges page.
# Secure auth-token storage in Angular
Do not store bearer tokens, refresh tokens, or session secrets in `localStorage` or `sessionStorage`: JavaScript can read them after an XSS, and they persist beyond the page in ways that increase exposure. Prefer a server-managed session or token in a cookie with `HttpOnly`, `Secure`, and an appropriate `SameSite` setting. The browser then sends the auth cookie without Angular reading the secret.
For same-origin requests, normal `HttpClient` requests send the cookie. For a separate API origin, enable credentials explicitly and configure the server's CORS policy to allow only the exact application origin:
```typescript
import { HttpInterceptorFn } from '@angular/common/http';
export const credentialsInterceptor: HttpInterceptorFn = (req, next) =>
next(req.clone({ withCredentials: true }));
```
Register that interceptor only for the intended client configuration. Protect cookie-authenticated state-changing requests against CSRF using the server's CSRF mechanism and Angular's XSRF support where applicable; `HttpOnly` prevents token theft by JavaScript but does not itself prevent CSRF. Use short-lived sessions, rotation/revocation, server-side authorization, and logout invalidation, and never log the token. Do not put API keys or other secrets in Angular source or its compiled bundle. If an access token must exist in the browser, keep it in memory with an explicit expiry and understand that this is a fallback with different tradeoffs, not a reason to use web storage.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!