</>
⌕
← Trang chủ
Wb

Web & Trình duyệt

HTTP, CORS, cookie, XSS/CSRF, Web Vitals

🃏 Ôn bằng flashcard
Tiến độ0/16 · 0%
Junior

Các HTTP method phổ biến và nhóm status code cần nhớ?

GET đọc, POST tạo/xử lý, PUT thay thế toàn bộ, PATCH sửa một phần, DELETE xóa. GET/PUT/DELETE là idempotent, GET còn là safe. Status: 2xx thành công, 3xx chuyển hướng, 4xx lỗi phía client, 5xx lỗi phía server.

#http#methods#status-code
Junior

Cookie, localStorage và sessionStorage khác nhau thế nào?

Cookie tự gửi kèm mỗi request cùng origin/domain, có hạn dùng và cờ bảo mật (HttpOnly, Secure, SameSite), dung lượng khoảng 4KB. localStorage lưu vĩnh viễn, sessionStorage lưu theo tab; cả hai chỉ truy cập qua JS, khoảng 5MB, không tự gửi lên server.

#cookie#localstorage#sessionstorage
Junior

Điều gì xảy ra khi gõ một URL vào trình duyệt và nhấn Enter?

Trình duyệt phân tích URL, tra cache rồi phân giải DNS ra IP, mở kết nối TCP (và TLS nếu HTTPS), gửi HTTP request, nhận response, parse HTML thành DOM, tải CSS/JS/ảnh phụ thuộc, tạo render tree rồi layout, paint và composite lên màn hình.

#browser#dns#tcp
Junior

DNS phân giải tên miền như thế nào? Các loại record và TTL?

DNS chuyển tên miền thành IP: trình duyệt/OS cache, rồi recursive resolver hỏi lần lượt root, TLD (.com), authoritative nameserver và cache kết quả theo TTL. Record thường gặp: A/AAAA (IP), CNAME (alias), MX (mail), TXT, NS.

#dns#network#ttl
Junior

HTTPS và TLS handshake hoạt động cơ bản như thế nào?

HTTPS là HTTP chạy trên TLS, cung cấp mã hóa, toàn vẹn và xác thực server. Trong handshake, client và server thỏa thuận phiên bản/cipher, server gửi certificate để client kiểm tra chuỗi tin cậy, rồi hai bên trao đổi khóa (ECDHE) để sinh session key đối xứng mã hóa dữ liệu.

#https#tls#certificate
Mid

CORS là gì? Preflight request hoạt động ra sao?

Same-origin policy chặn JS đọc response cross-origin; CORS là cơ chế server dùng header Access-Control-* để cho phép. Với request không đơn giản (method khác GET/POST/HEAD, header tùy chỉnh, JSON content-type), trình duyệt gửi OPTIONS preflight trước để hỏi server có cho phép không.

#cors#same-origin-policy#preflight
Mid

HTTP caching: `Cache-Control`, `ETag` và validation hoạt động ra sao?

Cache-Control điều khiển việc cache: max-age (thời gian fresh), no-cache (phải revalidate), no-store (không lưu), public/private. Khi hết hạn, trình duyệt gửi If-None-Match với ETag; nếu không đổi server trả 304 Not Modified không kèm body.

#cache#cache-control#etag
Mid

JWT nên lưu ở đâu: localStorage hay cookie HttpOnly?

localStorage dễ bị XSS đánh cắp token. Cookie HttpOnly + Secure + SameSite thì JS không đọc được nên an toàn hơn trước XSS nhưng cần chống CSRF. Cách phổ biến: access token ngắn hạn trong bộ nhớ, refresh token trong cookie HttpOnly và có rotation.

#jwt#authentication#security
Mid

So sánh REST, GraphQL và gRPC: khi nào chọn cái nào?

REST: dựa trên resource và HTTP, dễ cache, phổ biến. GraphQL: client chọn field cần lấy qua một endpoint, tránh over/under-fetching nhưng cache và rate limit phức tạp hơn. gRPC: Protobuf nhị phân trên HTTP/2, nhanh, có streaming, hợp giao tiếp service-to-service.

#rest#graphql#grpc
Mid

WebSocket, Server-Sent Events và long polling: khác nhau và chọn thế nào?

WebSocket là kênh song công (hai chiều) trên một kết nối TCP sau bước upgrade, hợp chat/game. SSE là luồng một chiều server tới client trên HTTP, tự reconnect, đủ cho notification/feed. Long polling là fallback đơn giản nhưng tốn tài nguyên hơn.

#websocket#sse#realtime
Mid

XSS và CSRF khác nhau thế nào? Cách phòng chống?

XSS: kẻ tấn công chèn script chạy trong trang của bạn (đánh cắp dữ liệu, thao tác thay người dùng); chống bằng escape/encode output, tránh innerHTML, CSP. CSRF: lợi dụng cookie tự gửi để khiến người dùng đã đăng nhập gửi request ngoài ý muốn; chống bằng SameSite cookie và CSRF token.

#xss#csrf#security
Senior

Bundler (Webpack/Vite), tree-shaking và code splitting hoạt động thế nào?

Bundler gộp module và tối ưu (minify, chia chunk). Tree-shaking loại code export không dùng, dựa vào ES Modules tĩnh và cờ sideEffects. Code splitting chia bundle thành chunk tải khi cần bằng dynamic import(). Vite dev dùng native ESM + esbuild nên khởi động nhanh, build production dùng Rollup.

#bundler#webpack#vite
Senior

Content Security Policy (CSP) là gì? Các security header quan trọng khác?

CSP là header cho trình duyệt biết nguồn nào được phép tải script, style, ảnh..., nhờ đó giảm thiệt hại của XSS (script chèn vào bị chặn nếu không khớp policy). Nên dùng nonce hoặc hash thay vì 'unsafe-inline', và thử bằng Report-Only trước khi enforce.

#csp#security-headers#xss
Senior

Critical rendering path và Core Web Vitals (LCP, INP, CLS): cách cải thiện?

Critical rendering path: DOM + CSSOM thành render tree, rồi layout, paint, composite. Core Web Vitals: LCP (tải nội dung chính, tốt dưới 2.5s), INP (phản hồi tương tác, dưới 200ms), CLS (ổn định layout, dưới 0.1). Cải thiện: giảm render-blocking, tối ưu ảnh/font, chia nhỏ JS, dành chỗ cho nội dung.

#performance#core-web-vitals#lcp
Senior

HTTP/1.1, HTTP/2 và HTTP/3 khác nhau thế nào?

HTTP/1.1 text, mỗi kết nối xử lý tuần tự (head-of-line blocking ở tầng HTTP). HTTP/2 dùng binary framing, multiplexing nhiều stream trên một kết nối TCP và nén header HPACK. HTTP/3 chạy trên QUIC (UDP) nên loại bỏ head-of-line blocking ở tầng TCP, kết nối nhanh hơn và chịu đổi mạng tốt.

#http2#http3#quic
Senior

Service Worker và PWA hoạt động thế nào? Các chiến lược cache?

Service Worker là script chạy nền tách khỏi trang, đứng giữa trang và mạng để chặn fetch, cache bằng Cache API, hỗ trợ offline, push và background sync. Chỉ chạy trên HTTPS (ngoại trừ localhost). PWA kết hợp Service Worker, web manifest và HTTPS để cài được như app.

#service-worker#pwa#offline