Chương 3 Phòng chống SQL Injection
3.3. xuất một số giải pháp
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 giải pháp an ninh hệ thống chỉ có thể hướng tới việc bảo vệ hệ thống một cách tối đa, và giảm thiểu các nguy cơ tấn công xuống mức tối thiểu. Một mơ hình an ninh nhiều mức là một sự lựa chọn sáng suốt cho vấn đề này.
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. Ngồ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.
Chúng ta có thể hệ thống lại các giải pháp an ninh ứng dụng đã đề cập theo một mơ hình sau.
Hình 3.2 – mơ hình đề xuất
Trong mơ hình trên, q trình xử lý request từ phía người dùng trải qua 6 giai đoạn:
- 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.
- Xử lý request ở tường lửa Web: trong giai đoạn này các luật lọc ở tường lửa Web sẽ giúp chặn lại các request có URL, tham số tiềm ẩn nguy cơ tấn cơng.
- 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), …
- 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 hồn chỉnh
- 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)
- 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.
- 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 số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.
SQL Injection – Tấn cơng và cách phịng tránh
74
Phụ lục:
Cấu hình ModSecurity phịng chống SQL Injection.