Node.js / NestJS

āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

Helmet, CORS, rate limiting, āļāļēāļĢāļ—āļģāļ„āļ§āļēāļĄāļŠāļ°āļ­āļēāļ”āļ­āļīāļ™āļžāļļāļ•, SQL injection, XSS, CSRF

25 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒÂ·
Senior
1

Helmet āļ„āļ·āļ­āļ­āļ°āđ„āļĢāđƒāļ™āļšāļĢāļīāļšāļ—āļ‚āļ­āļ‡ NestJS?

āļ„āļģāļ•āļ­āļš

Helmet āđ€āļ›āđ‡āļ™ middleware āļ—āļĩāđˆāļāļģāļŦāļ™āļ”āļ„āđˆāļē HTTP security headers āđ‚āļ”āļĒāļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļīāđ€āļžāļ·āđˆāļ­āļ›āļāļ›āđ‰āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™āļˆāļēāļāļŠāđˆāļ­āļ‡āđ‚āļŦāļ§āđˆāļ—āļĩāđˆāļžāļšāļšāđˆāļ­āļĒ āđ‚āļ”āļĒāļˆāļ°āđ€āļ›āļīāļ”āđƒāļŠāđ‰āļ‡āļēāļ™ header āļ­āļĒāđˆāļēāļ‡ X-Frame-Options, Content-Security-Policy, X-Content-Type-Options āđ€āļžāļ·āđˆāļ­āļ›āđ‰āļ­āļ‡āļāļąāļ™ XSS, clickjacking āđāļĨāļ° MIME sniffing Helmet āđ€āļ›āđ‡āļ™āđāļ™āļ§āļ—āļēāļ‡āļ›āļāļīāļšāļąāļ•āļīāļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āļ—āļĩāđˆāļˆāļģāđ€āļ›āđ‡āļ™āđƒāļ™āļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™āļˆāļĢāļīāļ‡āđ€āļžāļ·āđˆāļ­āđ€āļŠāļĢāļīāļĄāļ„āļ§āļēāļĄāđāļ‚āđ‡āļ‡āđāļāļĢāđˆāļ‡āđƒāļŦāđ‰āļāļąāļšāļžāļ·āđ‰āļ™āļœāļīāļ§āļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ

2

āļšāļ—āļšāļēāļ—āļŦāļĨāļąāļāļ‚āļ­āļ‡ CORS āđƒāļ™ API āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

CORS (Cross-Origin Resource Sharing) āļ„āļ§āļšāļ„āļļāļĄāļ§āđˆāļēāđ‚āļ”āđ€āļĄāļ™āļ āļēāļĒāļ™āļ­āļāđƒāļ”āļšāđ‰āļēāļ‡āļ—āļĩāđˆāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ—āļĢāļąāļžāļĒāļēāļāļĢāļ‚āļ­āļ‡ API āđ„āļ”āđ‰ āļŦāļēāļāđ„āļĄāđˆāļĄāļĩāļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē CORS āđ€āļšāļĢāļēāļ§āđŒāđ€āļ‹āļ­āļĢāđŒāļˆāļ°āļšāļĨāđ‡āļ­āļāļ„āļģāļ‚āļ­āļ—āļĩāđˆāļĄāļēāļˆāļēāļāđ‚āļ”āđ€āļĄāļ™āļ•āđˆāļēāļ‡āļāļąāļ™āļ”āđ‰āļ§āļĒāđ€āļŦāļ•āļļāļœāļĨāļ”āđ‰āļēāļ™āļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒ āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļē CORS āļ­āļĒāđˆāļēāļ‡āļ–āļđāļāļ•āđ‰āļ­āļ‡āļŠāđˆāļ§āļĒāļ›āđ‰āļ­āļ‡āļāļąāļ™āļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”āđƒāļ™āļāļēāļĢāđ€āļ‚āđ‰āļēāļ–āļķāļ‡āđƒāļ™āļ‚āļ“āļ°āļ—āļĩāđˆāļĒāļąāļ‡āļ„āļ‡āļĢāļąāļāļĐāļēāļ„āļ§āļēāļĄāļ›āļĨāļ­āļ”āļ āļąāļĒāđ„āļ§āđ‰ āļ„āļ§āļĢāđƒāļŠāđ‰ whitelist āļ‚āļ­āļ‡ origin āļ—āļĩāđˆāļ­āļ™āļļāļāļēāļ•āđāļ—āļ™āļ—āļĩāđˆāļˆāļ°āļ­āļ™āļļāļāļēāļ•āļ—āļļāļāđ‚āļ”āđ€āļĄāļ™āļ”āđ‰āļ§āļĒ wildcard

3

āđāļ™āļ§āļ—āļēāļ‡āļ—āļĩāđˆāļ”āļĩāļ—āļĩāđˆāļŠāļļāļ”āđƒāļ™āļāļēāļĢāļ›āļāļ›āđ‰āļ­āļ‡ API āļˆāļēāļāļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš brute force āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

āļ„āļģāļ•āļ­āļš

rate limiting āļˆāļģāļāļąāļ”āļˆāļģāļ™āļ§āļ™āļ„āļģāļ‚āļ­āļ•āđˆāļ­ IP āļŦāļĢāļ·āļ­āļ•āđˆāļ­āļœāļđāđ‰āđƒāļŠāđ‰āđƒāļ™āļŠāđˆāļ§āļ‡āđ€āļ§āļĨāļēāļ—āļĩāđˆāļāļģāļŦāļ™āļ” āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš brute force āļ­āļąāļ•āđ‚āļ™āļĄāļąāļ•āļī āđāļžāđ‡āļāđ€āļāļˆāļ­āļĒāđˆāļēāļ‡ throttler-module āđƒāļ™ NestJS āļŠāđˆāļ§āļĒāđƒāļŦāđ‰āļāļģāļŦāļ™āļ”āļ„āđˆāļēāļ‚āļĩāļ”āļˆāļģāļāļąāļ”āđāļšāļš global āļŦāļĢāļ·āļ­āļ•āđˆāļ­ endpoint āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āļ‡āđˆāļēāļĒāļ”āļēāļĒ āļ„āļ§āļĢāļœāļŠāļĄāļœāļŠāļēāļ™ rate limiting āļāļąāļšāļāļĨāļĒāļļāļ—āļ˜āđŒāđāļšāļšāđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™āļ—āļĩāļĨāļ°āļ‚āļąāđ‰āļ™ (āļāļēāļĢāļšāļĨāđ‡āļ­āļāļŠāļąāđˆāļ§āļ„āļĢāļēāļ§āļ—āļĩāđˆāđ€āļžāļīāđˆāļĄāļ‚āļķāđ‰āļ™) āđāļĨāļ° CAPTCHA āļŠāļģāļŦāļĢāļąāļš endpoint āļ—āļĩāđˆāļ­āđˆāļ­āļ™āđ„āļŦāļ§ āļ™āļ­āļāļˆāļēāļāļ™āļĩāđ‰ rate limiting āļĒāļąāļ‡āļ›āđ‰āļ­āļ‡āļāļąāļ™āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš denial of service āļ­āļĩāļāļ”āđ‰āļ§āļĒ

4

āļāļēāļĢāđ‚āļˆāļĄāļ•āļĩāđāļšāļš XSS (Cross-Site Scripting) āļ„āļ·āļ­āļ­āļ°āđ„āļĢ?

5

āļˆāļ°āļ›āļāļ›āđ‰āļ­āļ‡āđāļ­āļ›āļžāļĨāļīāđ€āļ„āļŠāļąāļ™ NestJS āļˆāļēāļ SQL injection āđ„āļ”āđ‰āļ­āļĒāđˆāļēāļ‡āđ„āļĢ

+22 āļ„āļģāļ–āļēāļĄāļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āļŦāļąāļ§āļ‚āđ‰āļ­āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ Node.js / NestJS āļ­āļ·āđˆāļ™āđ†

āļžāļ·āđ‰āļ™āļāļēāļ™ Node.js

Junior
20 āļ„āļģāļ–āļēāļĄ

Core API āļ‚āļ­āļ‡ Node.js

Junior
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđ€āļ‚āļĩāļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāļ­āļ°āļ‹āļīāļ‡āđ‚āļ„āļĢāļ™āļąāļŠ

Junior
25 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ Express.js

Junior
20 āļ„āļģāļ–āļēāļĄ

āļžāļ·āđ‰āļ™āļāļēāļ™ NestJS

Junior
23 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļ­āļāđāļšāļš REST API

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļđāļāļ•āđ‰āļ­āļ‡āđāļĨāļ° DTO

Junior
20 āļ„āļģāļ–āļēāļĄ

āđ€āļ­āļāļŠāļēāļĢ API āđāļĨāļ° Contract

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļ‚āđ‰āļ­āļœāļīāļ”āļžāļĨāļēāļ”

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāļŦāļ™āđˆāļ§āļĒ (Unit Testing)

Junior
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļˆāļąāļ”āļ•āļēāļĢāļēāļ‡āļ‡āļēāļ™

Junior
15 āļ„āļģāļ–āļēāļĄ

Module āđāļĨāļ° DI āļ‚āļ­āļ‡ NestJS

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļāļģāļŦāļ™āļ”āļ„āđˆāļēāđāļĨāļ°āļāļēāļĢāļˆāļąāļ”āļāļēāļĢāļŠāļ āļēāļžāđāļ§āļ”āļĨāđ‰āļ­āļĄ

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļĒāļ·āļ™āļĒāļąāļ™āļ•āļąāļ§āļ•āļ™āļ”āđ‰āļ§āļĒ JWT

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđƒāļŦāđ‰āļŠāļīāļ—āļ˜āļīāđŒāđāļĨāļ° RBAC

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļ™āļ‚āđ‰āļ­āļĄāļđāļĨāļ”āđ‰āļ§āļĒ TypeORM

Mid-Level
30 āļ„āļģāļ–āļēāļĄ

Prisma ORM

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Middleware āđāļĨāļ° Interceptor

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ­āļąāļ›āđ‚āļŦāļĨāļ”āđ„āļŸāļĨāđŒ

Mid-Level
15 āļ„āļģāļ–āļēāļĄ

WebSockets

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

GraphQL āļāļąāļš NestJS

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđāļšāļš End-to-End

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļāļēāļĢāđāļ„āļŠāļ”āđ‰āļ§āļĒ Redis

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

āļ„āļīāļ§āļ”āđ‰āļ§āļĒ Bull

Mid-Level
20 āļ„āļģāļ–āļēāļĄ

DevOps, Logging āđāļĨāļ° CI/CD

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

Docker āđāļĨāļ° Containerization

Mid-Level
25 āļ„āļģāļ–āļēāļĄ

āđ„āļĄāđ‚āļ„āļĢāđ€āļ‹āļ­āļĢāđŒāļ§āļīāļŠ

Senior
30 āļ„āļģāļ–āļēāļĄ

āļ›āļĢāļ°āļŠāļīāļ—āļ˜āļīāļ āļēāļžāđāļĨāļ°āļāļēāļĢ Deploy āļšāļ™ Cloud

Senior
30 āļ„āļģāļ–āļēāļĄ

āđ€āļŠāļĩāđˆāļĒāļ§āļŠāļēāļ Node.js / NestJS āļŠāļģāļŦāļĢāļąāļšāļāļēāļĢāļŠāļąāļĄāļ āļēāļĐāļ“āđŒāļ„āļĢāļąāđ‰āļ‡āļ–āļąāļ”āđ„āļ›

āđ€āļ‚āđ‰āļēāļ–āļķāļ‡āļ„āļģāļ–āļēāļĄāļ—āļąāđ‰āļ‡āļŦāļĄāļ” flashcards āđāļšāļšāļ—āļ”āļŠāļ­āļšāđ€āļ—āļ„āļ™āļīāļ„ āđāļšāļšāļāļķāļāļŦāļąāļ” code review āđāļĨāļ°āļ•āļąāļ§āļˆāļģāļĨāļ­āļ‡āļŠāļąāļĄāļ āļēāļĐāļ“āđŒ

āđ€āļĢāļīāđˆāļĄāđƒāļŠāđ‰āļŸāļĢāļĩ