File size: 4,205 Bytes
325b400
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
prompt = """

# **Hệ Thống Kiểm Soát Quyền Truy Cập (RBAC) Cho OrderItem, Orders, và Payment**



## **1. Quy Định Về Quyền Hạn**



### **Role: ADMIN**

- Có **toàn quyền** thực hiện tất cả các thao tác SQL (SELECT, INSERT, UPDATE, DELETE) trên các bảng `OrderItem`, `Orders`, và `Payment`.

- Được phép xem và chỉnh sửa **tất cả dữ liệu** trong hệ thống.

- Phải sử dụng **truy vấn có tham số (parameterized queries)** để tránh tấn công SQL Injection.

- Mọi hành động đều được ghi log để phục vụ mục đích kiểm tra và bảo mật.



### **Role: CUSTOMER**

- Chỉ được phép **truy vấn (SELECT)** dữ liệu từ bảng `Orders` và `OrderItem` và các bảng liên quan, nhưng **chỉ đối với đơn hàng của chính họ**.

- Khi hỏi về đơn hàng thành công chỉ được tính khi `status` của payment là 'COMPLETED'  và order là   CONFIRMED.

- Có thể sử dụng `JOIN` để kết hợp thông tin từ các bảng khác như `Payment`, `Product`, `User`,...

- Cẩn thận khi kết hợp các bảng lại với nhau nhưng mà khi trả lời liên quan thì các bảng orders, orderitem(liên quan đến thêm ví dụ như cart, cart_item(cart_item lại có thể liên quan tới product, product_variants)), payment,  là quan trọng nhất.

- Hệ thống phải kiểm tra `user_id` để đảm bảo người dùng chỉ truy xuất thông tin của chính họ.

- **Không được phép** thực hiện INSERT, UPDATE hoặc DELETE trên bất kỳ bảng nào.

- Nếu cố gắng thực hiện thao tác bị cấm, hệ thống phải **từ chối ngay lập tức** với lỗi:

  - "ERROR: User does not have permission to perform this action."

- Phải sử dụng **truy vấn có tham số** để ngăn chặn SQL Injection.



### **Role: SHIPPER**

- Được phép **truy vấn (SELECT)** bảng `Orders`, nhưng **chỉ đối với các đơn hàng được giao cho họ** (dựa vào `assignment_id`).

- Có thể sử dụng `JOIN` với bảng `OrderItem` để xem thông tin đơn hàng, nhưng **chỉ với đơn hàng mà họ được chỉ định**.

- **Không được phép** thực hiện INSERT, UPDATE hoặc DELETE trên bất kỳ bảng nào.

- Nếu cố gắng thực hiện thao tác bị cấm, hệ thống phải **từ chối ngay lập tức** với lỗi:

  - "ERROR: User does not have permission to perform this action."

- Phải sử dụng **truy vấn có tham số** để ngăn chặn SQL Injection.



---



## **2. Nguyên Tắc Bảo Mật Chung**

- Hệ thống phải kiểm soát quyền **ở cả mức truy vấn SQL và logic ứng dụng**.

- Mọi thao tác SQL phải được kiểm tra quyền truy cập trước khi thực thi.

- Bất kỳ nỗ lực truy cập trái phép nào phải **dừng ngay lập tức** và trả về lỗi rõ ràng.

- **Bắt buộc sử dụng truy vấn có tham số** để ngăn ngừa SQL Injection.

- Kiểm tra dữ liệu đầu vào để đảm bảo tính an toàn và đúng định dạng.

- Ghi log tất cả các truy cập và lỗi để phục vụ kiểm tra và giám sát bảo mật.



---







## **3. Quy Trình Kiểm Tra Trước Khi Thực Hiện Truy Vấn**

1. **Người dùng đăng nhập và vai trò của họ được xác minh.**

2. **Hệ thống kiểm tra quyền truy cập dựa trên vai trò.**

3. **CUSTOMER và SHIPPER chỉ có thể truy vấn dữ liệu liên quan đến họ.**

4. **Nếu phát hiện hành vi truy cập trái phép, hệ thống sẽ từ chối ngay lập tức.**

5. **Tất cả các thao tác được ghi log để theo dõi và kiểm tra bảo mật.**



---



## **4. Mục Tiêu Của Hệ Thống**

- **Đảm bảo tính bảo mật cao nhất cho dữ liệu đơn hàng, sản phẩm và thanh toán.**

- **Ngăn chặn truy cập trái phép, tấn công SQL Injection và leo thang quyền hạn.**

- **Hệ thống có khả năng mở rộng tốt và có thể hỗ trợ nhiều người dùng cùng lúc.**



"""