baodev0 and Claude Sonnet 5
12d5b4951c
feat: popup quảng cáo, đặt lại mật khẩu bằng token 80 ký tự, 2FA email, vá lỗ hổng bảo mật
...
- Popup/banner quảng cáo cấu hình từ admin (loại, link, lịch hiển thị)
- Đặt lại mật khẩu: token 80 ký tự kèm check digit Luhn thay cho token+email lộ trong URL, chỉ lưu bản băm, một lần dùng, hết hạn 60 phút
- Xác thực 2 lớp qua email khi đăng nhập (mã 6 số, ghi nhớ thiết bị 90 ngày)
- ApiAuthCheck chặn ngay tài khoản bị khoá dù JWT còn hạn (trước đây dùng được tới hết TTL)
- Handler trả 404 thay vì 500 khi ModelNotFoundException không bọc HttpException
- Test ClientTamperingTest: xác nhận IDOR/giả mạo dữ liệu từ client đều bị chặn
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
2026-10-13 13:23:33 +07:00
..
2026-05-11 11:09:55 +07:00
2026-09-28 08:26:29 +07:00
2026-05-16 20:01:52 +07:00
2026-05-16 20:01:52 +07:00
2026-02-06 20:52:59 +07:00
2026-10-13 13:23:33 +07:00
2026-10-13 13:23:33 +07:00
2026-05-16 20:01:52 +07:00
2026-10-11 09:56:18 +07:00
2026-09-28 08:26:29 +07:00
2026-05-16 20:01:52 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-10-11 23:07:51 +07:00
2025-07-24 16:18:27 +07:00
2026-08-22 17:30:55 +07:00
2025-07-24 16:18:27 +07:00
2026-02-12 17:23:01 +07:00
2026-10-11 09:56:18 +07:00
2026-10-11 09:56:18 +07:00
2026-09-27 11:42:40 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2025-07-24 16:18:27 +07:00
2026-10-11 09:56:18 +07:00
2026-10-05 09:30:24 +07:00
2025-07-24 16:18:27 +07:00
2026-09-28 08:26:29 +07:00
2026-07-21 21:37:28 +07:00
2026-09-28 08:26:29 +07:00
2026-09-09 16:56:22 +07:00
2025-07-24 16:18:27 +07:00
2026-07-21 21:37:28 +07:00
2026-09-28 08:26:29 +07:00
2026-08-06 17:24:01 +07:00
2026-08-06 17:24:01 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-07-21 21:37:28 +07:00
2026-05-16 20:01:52 +07:00
2025-07-24 16:18:27 +07:00
2026-09-28 08:26:29 +07:00
2026-07-25 11:05:34 +07:00
2026-05-25 15:39:42 +07:00
2026-10-09 11:32:05 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-10-13 13:23:33 +07:00
2026-05-25 15:39:42 +07:00
2026-05-25 15:39:42 +07:00
2026-10-11 23:07:51 +07:00
2026-09-28 08:26:29 +07:00
2026-02-06 16:18:15 +07:00
2026-08-26 16:19:38 +07:00
2026-09-28 08:26:29 +07:00
2026-09-27 11:42:40 +07:00
2026-09-09 16:56:22 +07:00
2026-09-27 11:42:40 +07:00
2026-10-08 11:25:28 +07:00
2026-03-12 09:30:29 +07:00
2026-10-11 23:07:51 +07:00
2026-09-28 08:26:29 +07:00
2025-07-24 16:18:27 +07:00
2025-07-24 16:18:27 +07:00
2026-10-09 11:32:05 +07:00
2026-07-14 17:03:38 +07:00
2025-07-24 16:18:27 +07:00
2026-10-11 23:07:51 +07:00
2026-10-09 11:32:05 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-09-28 08:26:29 +07:00
2026-07-06 08:00:23 +07:00