Lỗ hổng hệ thống và đe dọa

Một phần của tài liệu Xây dựng ứng dụng đóng học phí dựa trên nền android (Trang 51 - 53)

1. Phân tích hệ thống

2.4.1Lỗ hổng hệ thống và đe dọa

Hệ thống đóng học phí yêu cầu tính chính xác và bảo mật thông tin. có hai lỗ hổng nghiêm trọng dễ khai thác:

- Vấn đề xác thực người dung:

Việc truyền tên đăng nhập và mật khẩu trong hệ thống đóng học phí được thực hiên theo giao thức như sau:

Người dùng gửi (ID, P) cho Host, trong đó P là plaintext password của người dùng

Căn cứ vào ID, Host lấy từ database ra A, là một biến thể của password của người dùng và salt, là một chuỗi ngẫu nhiên gắn liền với ID của user. Host thực hiện một phép tính trên P (thông thường là B = H(P, salt), trong đó H là một hàm băm MD5 một chiều nào đó) để tính ra B, rồi so sánh A với B, nếu bằng nhau thì tiếp theo bước 3, không thì tiếp theo bước 4.

User được Host xác thực và cấp cho một session_id.

Host thông báo lỗi cho User, và yêu cầu làm lại từ bước 1.

Trong giao thức này vấn đề lớn nhất là plaintext password của User bị truyền đi mà không có bất kỳ sự bảo vệ. Việc tấn công vào hệ thống rất dễ dàng như: Man-In- The-Middle hay replay attack...

Bằng việc tấn công này kẻ tấn công có thể giả mạo lấy thông tin của người dùng, mật khẩu. Việc này sẽ làm cho tính bảo mật thông tin của người dùng bị phá hủy. - Vấn đề quyền sử dụng các API

Trong hệ thống đóng học phí qua di động thì việc truyền thông tin giữa Client- Server được thực hiện thông qua các API hỗ trợ. Các API này bị lỗi trong việc phân quyền sử dụng.

Giả sử:

Người dùng gửi (ID=1, P) cho host. Nhưng nếu bằng cách nào đó chúng ta thay đổi ID=2 để gửi lên server. Nếu Server không có cơ chế phân quyền API sẽ trả về thông tin của người dùng có ID=2 thay vì trả về thông tin của người dùng có ID=1.

Bằng việc tấn công này kẻ tấn công có thể vô hiệu hóa các phiên đóng học phí, hoặc giả mạo đóng học phí

2.4.2 Giải pháp

- Xác thực người dùng

Để khắc phục vấn đề này, giải pháp đề xuất là: Các thông tin trước khi được gửi đi được mã hóa bằng hàm băm một chiều MD5. Phương thức thực hiện như sau:

Người dùng gửi MD5(ID, P) cho Host, trong đó P là plaintext password của người dùng

Trên server chúng ta kiểm tra có người dùng nào có MD5(ID, P) trùng với thông tin gửi lên không. Nếu bằng nhau thì tiếp theo bước 3, không thì tiếp theo bước 4.

User được Host xác thực và cấp cho một session_id.

Host thông báo lỗi cho User, và yêu cầu làm lại từ bước 1. - Vấn đề quyền sử dụng các API

Để khắc phục lỗi phân quyền của các API, phải có cơ chế làm cho các API tự kiểm tra quyền của mình. Để làm điều này chúng ta có thể thêm tham số cho các API: Thêm một string ngẫu nhiên khó đoán cho mỗi người dùng. Trong hệ

thống đóng học phí này mật khẩu của người dùng sẽ dùng để kiểm tra cho các API.

Một phần của tài liệu Xây dựng ứng dụng đóng học phí dựa trên nền android (Trang 51 - 53)