
Bảo mật ASP.NET

Bảo mật vốn là chủ đề cực kỳ phức tạp và bảo mật trong ASP.NET cũng
không phải ngoại lệ. Các lập trình viên .NET chắc hẳn cũng đã quen
thuộc với những khó khăn gặp phải khi tìm kiếm tài liệu tiếng Việt trong
lĩnh vực này. Hôm nay, Quản Trị Mạng xin giới thiệu nôi dung chương 9,
chương về Bảo mật ASP.NET trong cuốn “ASP.NET in a Nutshell” của
hai tác giả Andrew Duthie và Matthew MacDonald, nhà xuất bản
O’Reilly.
Trong chương này, chúng ta sẽ đề cập đến một số phương thức giúp đảm bảo
an toàn cho các ứng dụng ASP.NET. Để nhấn mạnh vào nội dung trọng tâm
của chương, chúng ta sẽ không bàn về bảo mật mạng, bảo mật máy chủ và
bảo mật cơ sở hạ tầng ASP.NET. Nói như thế không có nghĩa là các chủ đề
đó không quan trọng. Ngược lại, nếu không cấu hình hỗ trợ bảo mật phù hợp
cho máy chủ và cơ sở hạ tầng mạng, những gì cố gắng thực hiện để đảm bảo
an toàn cho ứng dụng ASP.NET thông qua các công cụ .NET Framework
cung cấp sẽ trở nên vô ích. Tuy nhiên, nằm trong phạm vi giới hạn của một
chương nên chúng ta chỉ đi sâu vào vấn đề bảo mật các chương trình ứng
dụng ASP.NET.

Sự quan trọng của bảo mật không lời nào nói hết. Nếu không đầu tư thời gian
cũng như tài nguyên thích đáng cho nhiệm vụ này có thể dẫn tới những kết
quả không mong muốn như thất thoát dữ liệu, sai hỏng trong thực thi ứng
dụng hoặc ứng dụng bị chiếm quyền điều khiển và giảm doanh thu lợi nhuận
của doanh nghiệp, làm cho doanh nghiệp bị mất uy tín với khách hàng. Xem
xét vấn đề bảo mật ngay từ khi bắt đầu xây dựng ứng dụng cũng là điều hết
sức quan trọng.
Đảm bảo an toàn trong truy cập ứng dụng hay truy cập tài nguyên thuộc ứng
dụng tập trung vào hai quá trình: thẩm định (authentication) và cấp phép
(authorization). Chúng ta sẽ quan tâm tới ba phương thức thẩm định mà bộ
thực thi ASP.NET cung cấp: Windows, Form và Passport. Còn với cấp phép,
chúng ta sẽ thảo luận chủ yếu về hai cơ chế: sử dụng đường dẫn URL và sử
dụng danh sách điều khiển truy cập ACL.
9.1. Các phương thức thẩm định
Thẩm định (authentication) là quá trình nhận dạng người hay chương trình
đưa ra yêu cầu. Nó không gán quyền truy cập tài nguyên (là chức năng của cơ
chế cấp phép) mà kiểm tra định danh đã biết để đưa ra quyết định xem liệu có

chấp nhận yêu cầu này hay không. Nói một cách đơn giản, thẩm định trả lời
cho câu hỏi: “Bạn là ai?”.
Trong ứng dụng ASP cổ điển, có hai phương thức thẩm định chính: một là
dựa trên IIS để thẩm định người dùng theo tài khoản Windows, sau đó sử
dụng các danh sách điều khiển truy cập (ACL) NT để hoàn tất quá trình thẩm
định; hai là đưa ra kiểu thẩm định riêng, so sánh để khớp với thông tin thẩm
định người dùng lưu trữ trên máy chủ (có thể nằm trong Microsoft Active
Directory). Mỗi phương thức đều có những điểm hạn chế riêng. Mô hình an
toàn nhất của thẩm định Windows, Intergrated Security, đòi hỏi tất cả người
dùng phải sử dụng Internet Explorer và không làm việc với quá nhiều proxy
server. Còn phương thức thẩm định riêng đòi hỏi phải tự xây dựng và kiểm
tra một lượng lớn công việc.
ASP.NET cung cấp ba cơ chế thẩm định:
Thẩm định Windows
Cung cấp tính năng tương tự như thẩm định IIS trong ASP cổ điển, tuy nhiên
cũng có một số điểm khác nhau quan trọng. Thẩm định Windows làm việc
cùng với thẩm định tích hợp sẵn trong IIS và dùng định danh do thẩm định
IIS cung cấp để thực hiện quá trình thẩm định.

Thẩm định Forms
Chủ yếu được dùng cho cơ chế thẩm định riêng. Thẩm định Form hỗ trợ
trang đăng nhập chung, cung cấp nhiều tuỳ chọn về lưu trữ thông tin thẩm
định, từ cơ sở dữ liệu với định dạng XML, file cấu hình và một số phương
thức trợ giúp để quản lý các hoạt động thẩm định. Cơ chế thẩm định này hầu
hết được dùng cho các trường hợp liên quan đến Internet.
Thẩm định Passport
Cho phép các nhà phát triển ASP.NET sử dụng kỹ thuật tiên tiến trong giải
pháp đăng nhập đơn Passport của Microsoft.
Cơ chế thẩm định ASP.NET thường được cấu hình ở mức máy, dùng file
machine.config hoặc mức ứng dụng, dùng file web.config. Chúng ta có thể
cấu hình các thiết lập thẩm định sử dụng phần tử <authentication> cùng với
các thuộc tính và phần tử con của nó.
Các thiết lập thẩm định không được phép cấu hình bên dưới mức ứng dụng.
Tức là nếu muốn áp dụng quy chế thẩm định cho thư một mục con của một
ứng dụng, chúng ta cần phải cấu hình nó như một ứng dụng trong IIS. Các
thiết lập cấp phép (authorization) không gặp phải hạn chế này.

