1. Dữ liệu được xử lý
Tùy tính năng bạn sử dụng, hệ thống có thể lưu:
- Định danh API UY TÍN: email, tên và thông tin hồ sơ cơ bản để tạo phiên đăng nhập.
- Hồ sơ thành viên: họ và tên, lớp, ngày sinh và avatar.
- Hoạt động câu lạc bộ: sự kiện, số buổi hoạt động, ca điểm danh và cấu hình điểm.
- Điểm danh: bản ghi có mặt/trễ/vắng gắn với tài khoản và ca/sự kiện liên quan.
- Audit: người thực hiện, thao tác, đối tượng và thời điểm đối với hoạt động quản trị.
Hệ thống không yêu cầu hoặc lưu mật khẩu của bạn. Việc xác thực được xử lý qua API UY TÍN.
2. Xác thực và phân quyền
API UY TÍN OAuth
Đăng nhập bắt đầu qua API UY TÍN, callback cố định tại https://hocsinh10a1.pages.dev/auth/callback. Server kiểm tra state OAuth, trao đổi code bằng secret server-side và tạo cookie phiên. Sau khi xác thực, thành viên hoàn thiện họ tên, lớp và ngày sinh để vào thẳng hệ thống; không có bước admin phê duyệt thành viên.
Quyền ở backend
Mọi endpoint nhạy cảm đều yêu cầu server xác minh phiên và vai trò: Members, phân quyền, tạo/đóng ca QR, xóa dữ liệu, audit và điều chỉnh điểm. Việc ẩn nút ở frontend chỉ là lớp trải nghiệm; không phải cơ chế bảo mật duy nhất.
Nguyên tắc tối thiểu: thành viên chỉ làm được thao tác của thành viên; admin chỉ thao tác trong phạm vi quyền; tài khoản owner được bảo vệ khỏi xóa hoặc giáng chức trái phép.
3. Bảo vệ phiên và trình duyệt
- Cookie phiên có cờ HttpOnly, Secure và SameSite=Lax để giảm nguy cơ script đọc cookie và giảm gửi cookie chéo site.
- Phản hồi web dùng các header như X-Content-Type-Options, X-Frame-Options, Referrer-Policy và Permissions-Policy.
- Content Security Policy giới hạn nguồn script, font, ảnh và kết nối theo các dịch vụ cần thiết.
- Cooldown 5 giây cho cùng một nút/form giúp hạn chế gửi lặp do bấm liên tục; backend vẫn phải tự kiểm tra dữ liệu.
Người dùng nên đăng xuất khi dùng máy dùng chung, không cài extension không rõ nguồn gốc và không gửi cookie phiên cho bất kỳ ai.
4. Điểm danh QR an toàn thế nào?
- Mã có giới hạnMỗi ca có mã chữ-số ngẫu nhiên 15 ký tự, sessionId và mốc bắt đầu/kết thúc riêng.
- Server xác thựcQuét QR chỉ gửi dữ liệu để server đối chiếu tài khoản, ca, thời gian và trạng thái; không tin dữ liệu hiển thị do frontend tự sửa.
- Ca độc lậpNhiều admin có thể tạo nhiều ca; mã này không dùng được để thay thế hoặc sửa ca khác.
- Đóng ca chặn quét mớiKhi admin đóng ca, QR không còn hiện tại giao diện và server không nhận lượt mới cho ca đã đóng.
QR là thông tin nhạy cảm trong thời gian ngắn. Admin nên chỉ hiển thị trực tiếp cho nhóm cần điểm danh, đóng ca khi xong và tạo mã mới nếu mã bị chụp/chia sẻ ngoài ý muốn.
5. Avatar, camera và tệp tải lên
Avatar chỉ nhận loại hình ảnh được cho phép và giới hạn 5 MB. Server kiểm tra MIME type và kích thước trước khi upload. Khi thay avatar, asset cũ được xóa nếu không còn tham chiếu hợp lệ.
Camera chỉ được dùng khi người dùng chủ động mở trình quét và cấp quyền cho trình duyệt. Website không tự mở camera nền. Có thể từ chối quyền camera và dùng mã thủ công.
6. Lưu giữ, nhật ký và xóa dữ liệu
Nhật ký hoạt động được giới hạn còn 50 bản ghi mới nhất để giảm lưu trữ dư thừa. Lịch sử điểm danh có quy tắc riêng. Xóa lịch sử là thao tác quản trị có điều kiện, yêu cầu ca đang mở được đóng trước.
Người dùng có thể yêu cầu quản trị viên kiểm tra, cập nhật hoặc xử lý hồ sơ của mình. Các yêu cầu xóa có thể bị giới hạn nếu dữ liệu cần thiết cho an toàn hệ thống, đối soát sự kiện hoặc nghĩa vụ quản trị.
7. Trách nhiệm người dùng và báo cáo sự cố
- Dùng tài khoản API UY TÍN của chính mình, không chia sẻ phiên đăng nhập và không cho người khác quét QR thay.
- Đăng xuất trên máy công cộng; cập nhật trình duyệt; chỉ cấp camera khi thực sự cần.
- Báo ngay cho admin nếu thấy đăng nhập lạ, quyền sai, QR bị phát tán hoặc dữ liệu hồ sơ bị thay đổi.
Khi báo sự cố, cung cấp thời điểm, URL, thiết bị, bước tái hiện và ảnh chụp đã che email/mã nhạy cảm. Không gửi token, cookie, mã QR hoặc mã xác thực.
Cam kết minh bạch: trang này mô tả các biện pháp đang được triển khai, không phải lời đảm bảo rằng mọi rủi ro trên Internet đều bằng không. Khi có thay đổi lớn về cách xử lý dữ liệu, nội dung an toàn thông tin sẽ được cập nhật.
8. Kiểm tra nhanh trước khi dùng
| Việc nên làm | Mục đích |
|---|---|
| Kiểm tra đúng domain | Tránh nhập thông tin trên trang giả mạo. |
| Không chia sẻ QR | Ngăn người ngoài sử dụng ca điểm danh. |
| Đăng xuất máy chung | Giảm nguy cơ người khác dùng lại phiên. |
| Che dữ liệu khi báo lỗi | Không làm lộ email, cookie, mã QR hoặc nội dung riêng tư. |