На одну сторінку

Безпека вебзастосунків: шпаргалка

Те, що варто тримати під рукою. Якщо рядок незрозумілий, повернись у відповідний урок курсу.

Відкрити курс: Безпека вебзастосунків

Ін'єкції

ЩоЯк
SQL зі значеннямpool.query("... WHERE id = $1", [id])
Колонка чи сортуваннябілий список, не плейсхолдер
Prisma, сирий SQL$queryRaw`...${x}`, не $queryRawUnsafe
Зовнішня програмаexecFile("cmd", [arg]), не exec
Фільтр MongoDBtypeof value === "string"

XSS і CSRF

ЩоЯк
Вивести текстtextContent, не innerHTML
Потрібен HTMLDOMPurify.sanitize(html)
CSPscript-src 'nonce-...' 'strict-dynamic'; object-src 'none'
Cookie сесіїHttpOnly; Secure; SameSite=Lax
Форма зі зміною стануCSRF-токен + перевірка Origin

Автентифікація і секрети

ЩоЯк
Хеш пароляArgon2id: 19 MiB, t=2, p=1
Порівняння секретівcrypto.timingSafeEqual(a, b)
Ліміт входуза акаунтом і за IP
Найкращий другий факторpasskey (WebAuthn)
Секрет витіквідкликати, видати новий, перевірити журнали
Ротація ключів JWTkid у заголовку, два ключі на перехід

Заголовки, SSRF, залежності

ЩоЯк
Лише HTTPSStrict-Transport-Security: max-age=63072000
Не вгадувати типX-Content-Type-Options: nosniff
Без iframeframe-ancestors 'none'
CORS з cookieбілий список Origin + Vary: Origin
URL від користувачабілий список хостів, без редиректів
Встановлення в CIpnpm install --frozen-lockfile

Розділи платформи