logo

Database

Typescript Client Storage Exposure

Description

Detects when sensitive data is exposed by storing it in client-side storage mechanisms like localStorage or sessionStorage in TypeScript/JavaScript code. This is a security risk since client-side storage is accessible to malicious scripts and can expose sensitive application data.

Weakness:

085 - Sensitive data stored in client-side storage

Category: Information Collection

Detection Strategy

    • Identifies assignments or operations involving browser storage APIs (localStorage, sessionStorage)

    • Reports issues when sensitive data is written to client storage without proper encryption or security controls

    • Specifically looks for direct storage of tokens, credentials, or other sensitive values in client-side storage

    • Triggers on code patterns like 'localStorage.setItem(key, sensitiveData)' or 'sessionStorage.setItem(...)'

Vulnerable code example

function storeCredentials(token: string, password: string) {
  // Vulnerable: Storing sensitive auth token in sessionStorage
  sessionStorage.setItem('token', token);
  // Vulnerable: Storing password in client-side storage
  sessionStorage.setItem('password', password);
}

✅ Secure code example

function storeCredentials(token: string, password: string) {
  // Safe: Store only non-sensitive session indicators
  sessionStorage.setItem('is_authenticated', 'true');
  
  // Safe: Store expiration time instead of actual token
  const tokenData = parseJwt(token);
  const expirationTime = (tokenData.exp * 1000 - 45 * 60 * 1000) / 1000;
  const encodedExpiration = encodeAndObfuscate(expirationTime);...