Thực tế cho thấy không một hệ thống ứng dụng Web nào được coi là an ninh tuyệt đối. Các biện pháp an ninh chúng ta đã đề cập tới bao gồm các biện pháp quản lý luồng thông tin trao đổi giữa ứng dụng và database server như: lọc request từ client thông qua tường lửa Web, chuẩn hóa các tham số lấy được từ request, xây dựng các truy vấn tham số hóa, lọc tiếp lần cuối các HTTP response tại tường lửa Web. Ngoài ra còn cần áp dụng các biện pháp an ninh mức nền tảng hệ thống. Trong phạm vi luận văn này, tác giả đề xuất mô hình hệ thống đảm bảo an toàn an ninh dữ liệu các Website thương mại điện tử như sau:
Hình 3. 1: Mô hình đề xuất
Trong mô hình trên, quá trình xử lý request từ phía người dùng trải qua các giai đoạn:
- Giai đoạn 1: Nhận request từ client (các tham số đầu vào do người dùng toàn quyền
điều khiển). Giai đoạn này chúng ta không can thiệp được.
- Giai đoạn 2: Xử lý request ở tường lửa Web: trong giai đoạn này các luật lọc ở tường
- Giai đoạn 3: Chuẩn hóa dữ liệu thu được từ request trong mã nguồn ứng dụng. Giai đoạn này thực hiện kiểm tra, chuẩn hóa các dữ liệu từ phía người dùng, một số thao tác cần tiến hành như kiểm tra kiểu dữ liệu, kiểm tra độ dài dữ liệu (đề phòng Buffer overflow), ...
- Giai đoạn 4: Sinh các truy vấn theo mô hình tham số hóa (parameterized query hay
prepared query). Các truy vấn này sẽ được DBMS tối ưu, khi thực thi sẽ nhận các tham số đã chuẩn hóa ở giai đoạn trước vào để có câu truy vấn hoàn chỉnh
- Giai đoạn 5: Xử lý kết quả từ database trả về, sinh các kết quả để HTML gửi về client
thông qua các thông điệp phản hồi (HTTP response)
- Giai đoạn 6: Thông điệp phản hồi (HTTP response) sẽ được qua tường lửa Web lọc
các thông tin trong đó nhằm loại bỏ các request có rò rỉ dữ liệu nhạy cảm.
- Giai đoạn 7: Các thông điệp phản hồi sau khi được kiểm tra sẽ được trả về cho client.
Giai đoạn này ứng dụng không kiểm soát được.
Mô hình trên nên được áp dụng cho tất cả các ứng dụng Web nhằm đảm bảo an ninh tối đa trước các cuộc tấn công SQL Injection. Trong mô hình trên, chúng ta đã thực hiện được việc kiểm soát dữ liệu đầu vào của người dùng thông qua các bước xử lý khác nhau. Việc xử lý request từ mức tường lửa sẽ giúp giảm thiểu được gánh nặng xử lý cho ứng dụng bên trong, đồng thời tiết kiệm được băng thông cho hệ thống. Các tham số chuẩn hóa sẽ giúp các truy vấn SQL (trực tiếp hoặc thông qua các Stored Procedure) được thực thi an toàn hơn. Và cuối cùng, các thông tin có thể bị rò rỉ trong thông điệp phản hồi sẽ được kiểm tra lần nữa trước khi chuyển về cho client.