Multi-Tenant: Mỗi Người Một Vùng Dữ Liệu...
AWSBảo mật

Multi-Tenant: Mỗi Người Một Vùng Dữ Liệu, và Chặn IDOR

Biến URL shortener thành multi-tenant đúng nghĩa. Thêm route liệt kê link giới hạn theo danh tính trong token, và route xóa link kiểm quyền sở hữu ngay trong thao tác ghi để một người không xóa được link của người khác kể cả khi đoán đúng mã. Test với hai người dùng thật để thấy ranh giới giữ vững.

K
KaiMay 26, 2026
Nối DynamoDB Vào Code: Ghi An Toàn và At...
AWSDynamoDB

Nối DynamoDB Vào Code: Ghi An Toàn và Atomic Counter

Gắn hai handler vào DynamoDB thật: tạo link ghi item với conditional write để không đè trùng mã, mở link tra cứu rồi đếm click bằng atomic counter. Bắn nhiều lượt mở song song để thấy atomic counter đếm chính xác, và bắt gặp một giới hạn thật của tài khoản — concurrency Lambda — khi 40 trong 50 request trả về 503.

K
KaiMay 26, 2026
Global Secondary Index và Sparse Index: ...
AWSDynamoDB

Global Secondary Index và Sparse Index: Mở Đường Truy Vấn Mới

Bảng single-table ở bài trước trả lời nhanh câu 'mở link theo code', nhưng bất lực với 'liệt kê link của một người dùng'. Bài này thêm một global secondary index để đảo khóa và mở đúng đường truy vấn đó, rồi dùng sparse index để index chỉ chứa link mà loại bỏ các bản ghi thống kê một cách tự nhiên. Tạo GSI thật, query thật để thấy cơ chế.

K
KaiMay 26, 2026
DynamoDB Single-Table Design: Bắt Đầu Từ...
AWSDynamoDB

DynamoDB Single-Table Design: Bắt Đầu Từ Câu Hỏi, Không Phải Từ Bảng

Thiết kế DynamoDB đi ngược với cơ sở dữ liệu quan hệ: bắt đầu từ các câu hỏi truy vấn, không từ bảng. Bài này liệt kê access pattern của URL shortener, giải thích partition key và sort key, rồi dựng một single-table với item collection — link và thống kê click của nó nằm chung một phân vùng, lấy về trong một query. Tạo bảng thật, put và query item thật để thấy cơ chế.

K
KaiMay 26, 2026