121 commands · 7 cheat sheets · HTML

Security, Storage, and Devices master quick reference

Browse 121 commands from 7 focused cheat sheets on page 1 of 1. Each example opens its matching detailed section.

Security, Storage, and Devices · 15 commands

File System Access and Origin-Private Storage Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Choose filesconst [handle] = await showOpenFilePicker({ multiple: false, types })View examples
Choose a save destinationconst handle = await showSaveFilePicker({ suggestedName: 'report.txt', types })View examples
Choose a directoryconst directory = await showDirectoryPicker({ mode: 'readwrite' })View examples
Query handle permissionconst state = await handle.queryPermission({ mode: 'readwrite' })View examples
Request handle permissionconst state = await handle.requestPermission({ mode: 'readwrite' })View examples
Read a file snapshotconst file = await handle.getFile(); const text = await file.text()View examples
Open a writable streamconst writable = await handle.createWritable({ keepExistingData: true })View examples
Write and commitawait writable.write(contents); await writable.close()View examples
Get or create a child fileconst file = await directory.getFileHandle('notes.txt', { create: true })View examples
Iterate directory entriesfor await (const [name, handle] of directory.entries()) inspect(name, handle)View examples
Remove a directory entryawait directory.removeEntry('cache', { recursive: true })View examples
Open the OPFS rootconst root = await navigator.storage.getDirectory()View examples
Open worker synchronous accessconst access = await fileHandle.createSyncAccessHandle()View examples
Estimate storage usageconst { usage, quota } = await navigator.storage.estimate()View examples
Request persistent storageconst persistent = await navigator.storage.persist()View examples

Security, Storage, and Devices · 14 commands

HTML File Inputs and File API Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Choose one file<input id="avatar" name="avatar" type="file">View examples
Hint accepted formats<input type="file" accept="image/png,image/jpeg,.webp">View examples
Choose several files<input type="file" name="attachments" multiple>View examples
Require a selection<input type="file" name="document" required>View examples
Access selected filesconst files = input.filesView examples
Inspect file metadataconst { name, size, type, lastModified } = fileView examples
Check a byte limitif (file.size > 5 * 1024 * 1024) reject(file)View examples
Read text with a promiseconst text = await file.text()View examples
Read binary with FileReaderreader.readAsArrayBuffer(file)View examples
Cancel a FileReader readreader.abort()View examples
Create a local preview URLconst url = URL.createObjectURL(file)View examples
Release a preview URLURL.revokeObjectURL(url)View examples
Submit multipart form data<form method="post" enctype="multipart/form-data">View examples
Build an upload bodyformData.append('attachment', file, file.name)View examples

Security, Storage, and Devices · 25 commands

Web Authentication and Passkeys Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Detect the WebAuthn interfaceif (!window.PublicKeyCredential) showPasswordFallback()View examples
Require a secure contextif (!isSecureContext) throw new Error('WebAuthn requires a secure context')View examples
Start registration on the serverconst optionsJSON = await fetch('/api/passkeys/register/options', { method: 'POST' }).then(r => r.json())View examples
Restrict credential operationsPermissions-Policy: publickey-credentials-create=(self), publickey-credentials-get=(self)View examples
Parse registration optionsconst publicKey = PublicKeyCredential.parseCreationOptionsFromJSON(optionsJSON.publicKey)View examples
Create a credentialconst credential = await navigator.credentials.create({ publicKey, signal: controller.signal })View examples
Require discoverabilityauthenticatorSelection: { residentKey: 'required', userVerification: 'required' }View examples
Exclude registered credentialsexcludeCredentials: credentials.map(({ id, transports }) => ({ type: 'public-key', id, transports }))View examples
Minimize attestationattestation: 'none'View examples
Serialize a Level 3 credentialconst payload = credential.toJSON()View examples
Encode bytes as base64urlconst encoded = bytesToBase64url(new Uint8Array(credential.rawId))View examples
Verify registration on the serverawait verifier.verifyRegistrationResponse({ response, expectedChallenge, expectedOrigin, expectedRPID })View examples
Store the verified credentialawait credentialStore.insert({ accountId, userHandle, credentialId, publicKey, counter, transports })View examples
Parse authentication optionsconst publicKey = PublicKeyCredential.parseRequestOptionsFromJSON(optionsJSON.publicKey)View examples
Request an assertionconst assertion = await navigator.credentials.get({ publicKey, signal: controller.signal })View examples
Enable usernameless discoverydelete publicKey.allowCredentialsView examples
Require an expected originexpectedOrigin: 'https://login.example.com'View examples
Require the registered RP IDexpectedRPID: 'example.com'View examples
Enforce user verificationrequireUserVerification: trueView examples
Detect conditional mediationconst available = await PublicKeyCredential.isConditionalMediationAvailable()View examples
Mark the autofill field<input name="username" autocomplete="username webauthn">View examples
Start a conditional requestconst assertion = await navigator.credentials.get({ publicKey, mediation: 'conditional', signal })View examples
Record transport hintsconst transports = credential.response.getTransports()View examples
Cancel a stale ceremonycontroller.abort(new DOMException('Replaced by a new request', 'AbortError'))View examples
Classify expected DOM errorsif (error instanceof DOMException && error.name === 'NotAllowedError') showRetry()View examples

Security, Storage, and Devices · 14 commands

Web Crypto API Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Generate random bytescrypto.getRandomValues(new Uint8Array(32))View examples
Generate a random UUIDconst id = crypto.randomUUID()View examples
Hash bytesconst digest = await crypto.subtle.digest('SHA-256', data)View examples
Generate an HMAC keyawait crypto.subtle.generateKey({ name: 'HMAC', hash: 'SHA-256' }, false, ['sign', 'verify'])View examples
Verify an HMACawait crypto.subtle.verify('HMAC', key, tag, message)View examples
Generate an AES-GCM keyawait crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, false, ['encrypt', 'decrypt'])View examples
Encrypt with AES-GCMawait crypto.subtle.encrypt({ name: 'AES-GCM', iv, additionalData, tagLength: 128 }, key, plaintext)View examples
Decrypt and authenticateawait crypto.subtle.decrypt({ name: 'AES-GCM', iv, additionalData, tagLength: 128 }, key, ciphertext)View examples
Derive a password keyawait crypto.subtle.deriveKey({ name: 'PBKDF2', salt, iterations, hash: 'SHA-256' }, baseKey, aes, false, usages)View examples
Expand input key materialawait crypto.subtle.deriveBits({ name: 'HKDF', hash: 'SHA-256', salt, info }, baseKey, 256)View examples
Generate an ECDSA pairawait crypto.subtle.generateKey({ name: 'ECDSA', namedCurve: 'P-256' }, false, ['sign', 'verify'])View examples
Verify an ECDSA signatureawait crypto.subtle.verify({ name: 'ECDSA', hash: 'SHA-256' }, publicKey, signature, data)View examples
Import a JWKawait crypto.subtle.importKey('jwk', jwk, algorithm, false, ['verify'])View examples
Export a public keyconst jwk = await crypto.subtle.exportKey('jwk', publicKey)View examples

Security, Storage, and Devices · 18 commands

Web Permissions, Geolocation, and Device Access Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Check the transport contextif (!isSecureContext) throw new Error('Device access requires HTTPS')View examples
Read geolocation permission stateconst status = await navigator.permissions.query({ name: 'geolocation' })View examples
Observe a permission changestatus.addEventListener('change', () => updateControls(status.state))View examples
Restrict location to this originPermissions-Policy: geolocation=(self)View examples
Disable camera and microphonePermissions-Policy: camera=(), microphone=()View examples
Delegate location to one frame<iframe src="https://maps.example/" allow="geolocation" title="Store map"> </iframe>View examples
Request one positionnavigator.geolocation.getCurrentPosition(onPosition, onError, { timeout: 10000, maximumAge: 60000 })View examples
Watch position changesconst watchId = navigator.geolocation.watchPosition(onPosition, onError, options)View examples
Stop watching locationnavigator.geolocation.clearWatch(watchId)View examples
Request camera and microphoneconst stream = await navigator.mediaDevices.getUserMedia({ video: true, audio: true })View examples
Stop every media trackstream.getTracks().forEach(track => track.stop())View examples
List exposed media devicesconst devices = await navigator.mediaDevices.enumerateDevices()View examples
Request a display surfaceconst stream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: false })View examples
Detect stopped screen sharingstream.getVideoTracks()[0].addEventListener('ended', handleShareEnded)View examples
Request orientation accessconst state = await DeviceOrientationEvent.requestPermission()View examples
Listen for orientation changesaddEventListener('deviceorientation', handleOrientation)View examples
Stop orientation updatesremoveEventListener('deviceorientation', handleOrientation)View examples
React to page visibilitydocument.addEventListener('visibilitychange', () => { if (document.hidden) stopSensitiveAccess() })View examples

Security, Storage, and Devices · 16 commands

Web Security: CSP, SRI, and Trusted Types Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Deny undeclared resource typesContent-Security-Policy: default-src 'none'; base-uri 'none'; object-src 'none'View examples
Allow required same-origin resourcesContent-Security-Policy: default-src 'none'; img-src 'self'; style-src 'self'; connect-src 'self'View examples
Authorize a script with a nonce<script nonce="RANDOM_BASE64_VALUE" src="/assets/app.js"> </script>View examples
Require a script nonceContent-Security-Policy: script-src 'nonce-RANDOM_BASE64_VALUE'; object-src 'none'; base-uri 'none'View examples
Propagate trust from a nonceContent-Security-Policy: script-src 'nonce-RANDOM_BASE64_VALUE' 'strict-dynamic'; base-uri 'none'View examples
Block hostile framingContent-Security-Policy: frame-ancestors 'none'View examples
Restrict form submissionsContent-Security-Policy: form-action 'self' https://payments.exampleView examples
Monitor a candidate policyContent-Security-Policy-Report-Only: default-src 'self'; report-to cspView examples
Name a reporting endpointReporting-Endpoints: csp="https://example.com/reports/csp"View examples
Verify an external script<script src="https://cdn.example/app.js" integrity="sha384-BASE64_DIGEST" crossorigin="anonymous"> </script>View examples
Verify an external stylesheet<link rel="stylesheet" href="/assets/site.css" integrity="sha384-BASE64_DIGEST">View examples
Require Trusted Types at sinksContent-Security-Policy: require-trusted-types-for 'script'; trusted-types app-htmlView examples
Create a TrustedHTML policyconst policy = trustedTypes.createPolicy('app-html', { createHTML: input => sanitize(input) })View examples
Insert untrusted text safelyoutput.textContent = untrustedTextView examples
Validate a link destinationconst url = new URL(candidate, location.origin)View examples
Observe local CSP violationsaddEventListener('securitypolicyviolation', event => console.warn(event.effectiveDirective))View examples

Security, Storage, and Devices · 19 commands

Web Storage and IndexedDB Cheat Sheet

Open full cheat sheet
UseSyntaxExamples
Save a persistent stringlocalStorage.setItem('theme', 'dark')View examples
Read a persistent stringconst theme = localStorage.getItem('theme')View examples
Remove one stored valuelocalStorage.removeItem('theme')View examples
Save tab-scoped statesessionStorage.setItem('draft-step', '2')View examples
Serialize a small objectlocalStorage.setItem('prefs', JSON.stringify(preferences))View examples
Observe another documentaddEventListener('storage', event => syncPreference(event))View examples
Open a versioned databaseconst request = indexedDB.open('notes', 3)View examples
Create an object storedb.createObjectStore('notes', { keyPath: 'id', autoIncrement: true })View examples
Create a non-unique indexstore.createIndex('by-updated', 'updatedAt')View examples
Release an old connectiondb.onversionchange = () => db.close()View examples
Start an atomic writeconst tx = db.transaction('notes', 'readwrite')View examples
Insert a new recordstore.add({ title: 'Plan', updatedAt: Date.now() })View examples
Insert or replace a recordstore.put({ id: 7, title: 'Revised', updatedAt: Date.now() })View examples
Read by primary keyconst request = store.get(7)View examples
Query an index rangeconst request = index.getAll(IDBKeyRange.lowerBound(cutoff))View examples
Iterate in reverse orderconst request = index.openCursor(null, 'prev')View examples
Estimate usage and quotaconst { usage, quota } = await navigator.storage.estimate()View examples
Request persistent storageconst persistent = await navigator.storage.persist()View examples
Delete a databaseconst request = indexedDB.deleteDatabase('notes')View examples
CMDMEMO TERMINALREAD ONLY