Chƣơng 2 CƠ SỞ HẠ TẦNG BẢO ĐẢM ATTT TRONG GDĐT
3.5. MÔ HÌNH QUẢN LÝ CƠ CHẾ AN TOÀN
3.5.3. Quản lý kiểm soát truy nhập
Đây là nội dung rất quan trọng đối với việc đảm bảo an toàn của hệ thống, kiểm soát truy cập có thể phân thành các nội dung cơ bản sau:
3.5.3.1. Kiểm tra tính hợp lệ của dữ liệu đầu vào:
Các ứng dụng Web dùng dữ liệu đầu vào trong các truy cập HTTP (hoặc trong các tập tin) nhằm xác định kết quả phản hồi. Tin tặc có thể sửa đổi bất kỳ phần nào của một truy xuất HTTP, bao gồm URL, querystring, headers, cookies, form fields, và thậm chí field ẩn (hidden fields), nhằm vƣợt qua các cơ chế bảo mật. Các tấn công phổ biến dạng này bao gồm:
Chạy lệnh hệ thống tùy chọn. Cross site scripting.
Lỗi tràn bộ đệm.
Tấn công Format string. SQL injection.
Cookie poisoning. Sửa đổi field ẩn.
Một số Website bảo vệ chống lại loại tấn công này bằng cách thiết lập bộ lọc dữ liệu đầu vào. Có rất nhiều cách để mã hóa (encode) dữ liệu, và những phƣơng cách mã hóa này không giống nhƣ các cách mã hóa thông thƣờng khác ở chỗ là nó dễ dàng đƣợc giải mã. Tuy vậy, những nhà lập trình viên thƣờng quên giải mã tất cả các tham số trƣớc khi sử dụng chúng. Tham số cần phải đƣợc chuyển đổi đến dạng đơn giản nhất trƣớc khi đƣợc kiểm tra, nếu không, dữ liệu xấu đầu vào có thể đƣợc mã hóa ẩn và vƣợt qua tầng bảo vệ của các module kiểm tra dữ liệu.
Một số lƣợng lớn ứng dụng chỉ sử dụng các cơ chế lọc phía trình duyệt để kiểm tra dữ liệu đầu vào. Các cơ chế kiểm tra phía trình duyệt rất dễ dàng đƣợc vƣợt qua, và ứng dụng web xem nhƣ không đƣợc bảo vệ bởi cơ chế này.
Tin tặc có thể tạo ra các truy xuất HTTP không thông qua trình duyệt bằng cách sử dụng các công cụ nhƣ telnet, truy xuất thẳng đến cổng 80 của máy chủ web. Kiểm tra dữ liệu ở phía máy trình duyệt có lợi điểm về hiệu suất và tính dễ sử dụng, tuy nhiên cơ chế này không cung cấp bất cứ lợi điểm gì về bảo mật. Kiểm tra dữ liệu ở phía server đóng vai trò thiết yếu trong việc ngăn cản những cuộc tấn công dạng sửa đổi tham số đầu vào. Khi các cơ chế bảo vệ ở server đã đƣợc thiết lập, cơ chế bảo vệ phía trình duyệt có thể đƣợc sử dụng nhằm giảm bớt dung lƣợng các dữ liệu không hợp lệ đến máy chủ.
Hình 3.15 mô tả phƣơng cách phổ biến của hacker hiện nay sử dụng để tấn công
ứng dụng web. Trƣớc tiên, hacker thiết lập một proxy đứng giữa trình duyệt và máy chủ ứng dụng web. Proxy này có khả năng chặn các gói dữ liệu trƣớc khi chuyển đến máy chủ, do đó cho phép hacker sửa đổi dữ liệu truy cập và chèn các mã tấn công trƣớc khi gửi đến ứng dụng web.
Những tấn công dạng này đang có xu hƣớng ngày càng phổ biến hơn do số lƣợng các công cụ hỗ trợ các chức năng tạo tham số bất kỳ, tạo mã tấn công, tấn công brute force đang ngày càng tăng. Hậu quả cuộc việc sử dụng các tham số không đƣợc kiểm tra không nên đƣợc xem nhẹ. Một số lƣợng lớn các cuộc tấn công sẽ gây khó khăn cho nhà lập trình web, nếu họ không có một hệ thống tập trung kiểm tra tính hợp lệ của tất cả các truy xuất HTTP.
Trình duyệt Chƣơng trình local Proxy Máy chủ Web
3.5.3.2. Kiểm soát truy cập nguồn tài nguyên:
Kiểm soát truy cập tài nguyên, là cơ chế mà ứng dụng cho phép truy cập đến nội dung, tính năng ứng dụng cho một số ngƣời dùng, và từ chối truy cập cho một số ngƣời dùng khác. Những kiểm tra này đƣợc thực hiện sau quá trình xác thực, và quản lý các quyền truy cập mà ngƣời dùng đƣợc phép.
Kiểm soát truy cập bề ngoài tƣởng chừng là đơn giản, nhƣng thực tế là vấn đề rất khó đƣợc thi hành đầy đủ. Một mô hình quản lý truy cập tài nguyên cho ứng dụng cần đƣợc thiết kế theo sát nội dung và hàm chức năng của hệ thống cung cấp.
Hình 3.14: Mô hình quản lý kiểm soát truy cập nguồn tài nguyên trung tâm
Lập trình viên thƣờng không đánh giá đƣợc mức độ khó khăn trong việc xây dựng một cơ chế quản lý kiểm soát truy cập dữ liệu. Đa số những chức năng này không đƣợc thiết kế từ lúc đầu, mà đƣợc xây dựng kèm theo tùy tính năng của ứng dụng. Vì vậy, các chức năng kiểm soát đƣợc xây dựng ở khắp các module khác nhau trong mã nguồn. Khi ứng dụng đƣợc phát triển xong và đƣa và triển khai, các mã kiểm soát này sẽ trở nên không thống nhất và gây ra nhiều lỗ hổng nghiêm trọng khó phát hiện đƣợc.
3.5.3.3. Kiểm soát phiên truy cập:
Quản lý xác thực và phiên truy cập bao gồm tất cả các yếu tố quản lý xác thực ngƣời sử dụng và các phiên truy cập. Xác thực ngƣời dùng là một yếu tố quan trọng trong quy trình này, nhƣng ngay cả những cơ chế xác thực mạnh nhất vẫn có thể bị mắc những lỗi liên quan đến các chức năng quản lý xác thực, bao gồm thay đổi password, quên password, nhớ password ở trình duyệt, cập nhật tài khoản, và những hàm chức năng khác.
Xác thực ngƣời dùng trên một ứng dụng thƣờng bao gồm sử dụng một username và password. Những phƣơng pháp xác thực khác mạnh hơn bao gồm các giải pháp phần cứng hoặc mềm dựa trên các token mã hóa hoặc dùng phƣơng pháp sinh trắc học (biometrics). Tuy nhiên những phƣơng pháp này có phần hạn chế do giá thành cao. Một số lƣợng lớn lỗi ứng dụng trong các hàm quản lý tài khoản và phiên truy cập có thể dẫn đến mối nguy cơ lộ tài khoản ngƣời sử dụng và thậm chí tài khoản của ngƣời quản trị.
Các ứng dụng thƣờng phải theo dõi và duy trì phiên truy cập của ngƣời dùng, nhằm phân biệt các truy cập từ ngƣời dùng khác nhau. Giao thức HTTP không cung cấp khả năng này và do đó các ứng dụng phải tự tạo cơ chế này. Thƣờng thì, môi trƣờng phát triển ứng dụng cung cấp cơ chế quản lý phiên truy cập (thƣờng dƣới hình thức cookie token), tuy nhiên, đa số các nhà lập trình nghiêng về phát triển cơ chế riêng. Trong cả hai trƣờng hợp, nếu token quản lý phiên truy cập không đƣợc bảo vệ, tin tặc có thể ăn cắp token truy cập tài khoản của ngƣời khác.