1. Trang chủ
  2. » Công Nghệ Thông Tin

Bảo mật ASP.NET doc

43 212 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 43
Dung lượng 310,13 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 N

Trang 1

Bảo mật ASP.NET

Trang 2

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

Trang 3

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ó

Trang 4

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

Trang 5

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

Trang 6

9.1.1 Thẩm định Windows

Như đã đề cập tới ở trên, thẩm định Windows có chức năng giống như thẩm định IIS trong ASP cổ điển Thẩm định IIS sử dụng thông tin tài khoản người dùng lưu trữ trên server cục bộ hoặc Domain Controller và đưa nhân dạng người dùng vào bộ thực thi ASP.NET để dùng cho quá trình thẩm định Lý

do chính để chọn thẩm định Windows là bởi nó cần lượng mã triển khai thấp nhất Trong ba cơ chế thẩm định ASP.NET cung cấp, chỉ có thẩm định

Windows đòi hỏi phải cấu hình IIS cho các thiết lập thẩm định trong file

machine.config hoặc web.config

Giống như thẩm định IIS trong ASP, thẩm định Windows chủ yếu được dùng trong các trường hợp:

 Tất cả client đều dùng Internet Explorer 4.0 hoặc cao hơn và không có quá nhiều proxy server, chủ yếu phổ biến ở các mạng Intranet, không mấy khi gặp trong các ứng dụng Internet

 Yêu cầu bảo mật trong ứng dụng ở mức thấp, chỉ đòi hỏi thẩm định IIS Basic hoặc Digest (cả hai đều có hạn chế là kém an toàn hơn so với bảo mật hợp nhất)

Trang 7

 Yêu cầu bảo mật không cho phép người dùng nặc danh truy cập toàn bộ ứng dụng

Thẩm định Windows chủ yếu được dùng cùng với impersonation (tức một

ngữ cảnh bảo mật cụ thể) Chúng ta có thể giới hạn quyền truy cập tài nguyên bằng cách dùng Danh sách điều khiển truy cập NTFS (NTFS ACL) hoặc gán quyền truy cập cơ sở dữ liệu cho từng tài khoản Windows của người dùng khi đăng nhập vào cơ sở dữ liệu

Thẩm định Windows hoạt động theo nguyên tắc sử dụng ngữ cảnh bảo mật của người dùng lấy ra từ IIS Bước đầu tiên trong cấu hình một ứng dụng để

sử dụng thẩm định Windows là phải thay đổi các thiết lập cấu hình IIS để nó đáp ứng được một trong các phương thức thẩm định không nặc danh Chúng

ta có thể thực hiện như sau:

1 Mở Internet Services Manager

2 Ở khung bên trái, trỏ chuột xuống website hoặc thư mục gốc ảo muốn cấu hình

Trang 8

3 Kích phải chuột lên thư mục muốn cấu hình và chọn Properties để hiển thị hộp thoại thuộc tính <application name>

4 Bấm chọn thẻ Directory Security, sau đó là nút Edit trong phần

“Anonymous access and authentication control” (Điều khiển thẩm

định và truy cập nặc danh)

5 Bỏ dấu chọn ở ô “Anonymous access” và đặt dấu chọn cho một hay

nhiều cơ chế thẩm định (Basic, Digest, Integrated Windows)

6 Bấm OK để đóng hộp thoại phương thức thẩm định lại, sau đó bấm OK

lần nữa để đóng hộp thoại Properties Bây giờ chúng ta có đủ điều kiện

để cấu hình ứng dụng ASP.NET

Có ba mức độ trong thẩm định Windows là Basic, Digest và Integrated

Trong đó thẩm định Windows Basic là mức cơ bản nhất Nó cho phép sử dụng các tài khoản Windows ở nhiều trường hợp hơn nhưng thông tin

username, password được gửi đi dưới dạng văn bản thuần tuý Đây là điểm cực kỳ nguy hiểm, nhất là khi ứng dụng không dùng cơ chế mã hoá Secure

Trang 9

Sockets Layer (SSL) để bảo vệ các hoạt động truyền thông Chọn mức Basic thường có nhiều rủi ro hơn so với các mức khác

Tương tự, mức Digest đòi hỏi mật khẩu phải được lưu trữ ở dạng văn bản thuần tuý trên Domain Controller, nơi chứa các tài khoản Khi dùng thẩm định Digest, chúng ta phải cẩn thận với các cuộc tấn công mạng lên Domain Controller và phải đảm bảo an toàn về mặt vật lý trước các nhóm xâm nhập trái phép có thể truy cập để lấy cắp thông tin mật khẩu

Hình 9.1: Tiến trình thẩm định Windows

Như trên sơ đồ, trình tự của quá trình thẩm định Windows bắt đầu khi máy khách gửi yêu cầu tới máy chủ IIS sẽ thẩm định thông tin trên máy khách,

Trang 10

sau đó đưa yêu cầu tới bộ thực thi của ASP.NET trong đó có cả ngữ cảnh bảo mật, ASP.NET sử dụng ngữ cảnh bảo mật, kiểm tra các yếu tố như ACL… và đáp ứng yêu cầu của client

Để ASP.NET sử dụng ngữ cảnh bảo mật do IIS cung cấp, ứng dụng

ASP.NET phải được cấu hình cơ chế thẩm định Windows Cấu hình này được thực hiện bằng cách thêm phần tử <authentication> vào file

web.config của ứng dụng và thiết lập thuộc tính mode là Windows, có thể viết

Trang 11

Do yếu tố <authentication> không đòi hỏi bất kỳ phần tử con nào cho mô hình Windows, nên chúng ta có thể dùng một thẻ đơn với dấu đóng “/” thay

vì một thẻ đóng đầy đủ

Impersonation là thực tế của mã nguồn chạy trong ngữ cảnh bảo mật của một

tài khoản cụ thể Trong ASP.NET, impersonation được dùng để cho phép mã chương trình của ứng dụng được thực thi ở ngữ cảnh bảo mật cụ thể của người dùng đã qua thẩm định

Mặc định, chương trình thực thi ASP.NET chạy trong ngữ cảnh của một tài khoản đặc biệt gọi là ASPNET Tài khoản này có rất ít đặc quyền Vì thế các yêu cầu về tài nguyên bảo vệ bởi Danh sách điều khiển truy cập (ACL)

(chẳng hạn như file trong file hệ thống) sẽ thất bại, trừ phi tài khoản

ASPNET được gán đặc quyền tường minh Cơ chế này giúp các ứng dụng ASP.NET an toàn hơn

Khi gán đặc quyền tường minh cho tài khoản ASPNET, tài khoản sẽ có mức

ưu tiên cao, cho phép nhiều kiểu yêu cầu được thực hiện thành công mà

không cần dùng đến impersonation Ví dụ, SQL Sever mặc định cho phép

Trang 12

truy cập bất cứ người dùng nào trong nhóm quản trị cục bộ (local

administrator) chạy bộ thực thi ASP.NET với vai trò SYSTEM, làm cho nó

có thể kết nối tới một cơ sở dữ liệu SQL Sever cục bộ sử dụng một kết nối đáng tin cậy mà không cần dùng impersonation

Chạy hệ thống với vai trò SYSTEM có thể giải quyết được một số vấn đề về đặc quyền nhưng không phải là một ý tưởng hay Bởi vì nó cung cấp nhiều đặc quyền hơn mức cần thiết cho hầu hết các ứng dụng ASP.NET Khi đó, bất kỳ lỗ hổng nào cũng có thể xuất hiện trong IIS hoặc bộ thực thi ASP.NET

có thể sẽ cung cấp khả năng truy cập mức hệ thống cho những người khai thác chúng, bất kể hợp pháp hay trái phép Chạy bộ thực thi ASP.NET sử dụng tài khoản ASPNET làm giảm đáng kể các mối nguy hiểm như một cuộc khai thác lỗ hổng chẳng hạn

(Thiết lập này được điều khiển bởi thuộc tính username của phần tử

<processModel> trong machine.config)

Trong hầu hết mọi trường hợp sử dụng thẩm định Windows, impersonation được dùng để cho phép bộ thực thi ASP.NET đáp ứng yêu cầu (có tính đến ngữ cảnh bảo mật) cho người dùng đã qua thẩm định Trong ASP cổ điển, impersonation được dùng mặc định Chúng ta có thể cho phép impersonation

Trang 13

trong ASP.NET bằng cách thêm phần tử <identity> vào file web.config của ứng dụng, thuộc tính impersonate phải được thiết lập là True, như đoạn mã

9.1.2 Thẩm định Forms

Trang 14

Thẩm định Forms được đánh giá là phương thức hữu ích nhất trong ba

phương thức ASP.NET cung cấp Nó cung cấp một cơ sở hạ tầng rất linh hoạt cho các ngữ cảnh bảo mật tự người dùng định nghĩa Khi một ứng dụng được cấu hình để dùng thẩm định Forms, các yêu cầu về tài nguyên được bảo vệ sẽ được chuyển tới một trang đăng nhập cụ thể, ngoại trừ yêu cầu có gắn kèm

mã thông báo thẩm định nằm trong một cookie

9.1.2.1 Đăng nhập (Log in)

Trong trang đăng nhập, trình phát triển website sẽ viết mã kiểm tra thông tin thẩm định do người dùng nhập vào xem có khớp với thông tin sao lưu ở vùng lưu trữ trên máy chủ hay không Vùng lưu trữ này có thể là một cơ sở dữ liệu quan hệ như SQL Sever, một file XML, Microsoft Active Directory hoặc bất

kỳ nơi lưu trữ nào khác do chúng ta chọn Nếu thông tin người dùng gửi đi khớp với thông tin lưu trữ trên server, trình thực thi sẽ gọi phương thức

RedirectFromLoginPage của lớp trợ giúp FormsAuthentication để gửi trở lại cho người dùng trang web họ yêu cầu kèm theo một cookie nhất thời hoặc một cookie lâu dài có chứa mã thông báo thẩm định trên máy người dùng Khi người dùng đã được thẩm định, họ được quyền truy cập tới các vùng khác trên ứng dụng đó mà không cần đăng nhập lại

Trang 15

Để minh hoạ rõ hơn cho tiến trình hoạt động của cơ chế thẩm định Form, chúng ta hãy xét một ví dụ

Trang 16

Users.xml

File XML, chứa thông tin thẩm định của người dùng đã đăng ký Mật khẩu được lưu trữ dưới dạng các xâu ký tự hàm băm SHA1

Để sử dụng cơ chế thẩm định Form, ứng dụng phải được cấu hình với file

web.config như trong Hình 9-1, được đặt ở phần gốc của ứng dụng

Ví dụ 9-1: File web.config cho thẩm định Form

Trang 17

ta có dùng file Login.aspx, nên mặc định chúng ta sẽ bỏ qua thuộc tính này

(Trong phiên bản v1.1 của NET Framework có hai thuộc tính mới của phần

tử <forms> được thêm vào là RequireSslvà SlidingExpiration)

Phần tử <authorization>, gắn chặt với thư mục con files qua sử dụng thẻ

<location>, từ chối truy cập của bất kỳ người dùng nặc danh nào

Trang 18

Với cấu hình phù hợp, nếu người dùng chưa có một cookie thẩm định, yêu

cầu tới bất kỳ file nào trong thư mục con files (được cho là do ASP.NET điều

khiển) cũng sẽ đưa người dùng đến trang đăng nhập Nhưng chuyện gì sẽ xảy

ra khi kiểu file mà bạn muốn bảo vệ không phải do ASP.NET điều khiển mặc định? Khi đó, chúng ta có thể thực hiện các bước sau để thêm kiểu file vào cấu hình IIS cho ứng dụng:

1 Mở Internet Services Manager và xác định vị trí file bạn muốn cấu

hình

2 Kích phải chuột lên biểu tượng của file và chọn Properties

3 Trong hộp thoại Properties, chọn thẻ Directory (hoặc Home

Directory) và kích vào nút Configuration

4 Trên thẻ App Mappings, bấm nút Add

5 Trong hộp thoại Add/Edit Application Extension Mapping, bấm vào

nút Browse và tạo đường dẫn tới vị trí thư mục aspnet_isapi.dll Thông

Trang 19

6 Bây giờ nhập tên mở rộng cho file (chẳng hạn như zip) hoặc nhập * để

gắn tất cả kiểu file hỗ trợ trong ASP.NET

7 Ấn OK để lưu lại các thay đổi và đóng từng hộp thoại

8 Lặp lại các bước nếu muốn thêm một kiểu file khác vào

Chú ý: Sử dụng ký tự * để ánh xạ tất cả các kiểu file có trong ASP.NET là cách dễ dàng và nhanh chóng để bảo vệ tất cả các kiểu file này trong ứng dụng sử dụng cơ chế thẩm định Forms Tuy nhiên, chúng ta không nên dùng

kỹ thuật này nếu ứng dụng có chứa nhiều file, như các trang ASP cổ điển điều khiển bởi một ứng dụng ISAPI khác Bởi vì * sẽ đưa ra quyền ưu tiên và khiến các kiểu file này không hoạt động đúng như mong đợi

Trang 20

Sau khi tất cả các các kiểu file đã được đưa vào trình điều khiển ASP.NET, bất kỳ yêu cầu nào đưa ra về một trong các kiểu file đó trong thư mục con

files cũng sẽ khiến người dùng được chuyển đến file Login.aspx nếu họ chưa

có một cookie thẩm định Forms cho ứng dụng này Phần mã cho Login.aspx

được minh hoạ ở ví dụ 9-2 bên dưới:

Sub Login_Click(Sender As Object, e As EventArgs)

Dim LoginDS as DataSet

If Cache("LoginDS") Is Nothing Then

LoginDS = New DataSet( )

LoginDS.ReadXml(Server.MapPath("Users.xml"))

Trang 21

Email.text & "'").Length > 0 Then

Dim LoginRow( ) As DataRow = LoginDS.Tables(0).Select("Email='" _

& Email.text & "'")

Trang 22

Message.Text = "Email not found Have you " & _

"<a href='register.aspx?page=" & _

Server.UrlEncode(Request.RawUrl) & "'>registered</a>?" End If

Ngày đăng: 28/06/2014, 08:20

HÌNH ẢNH LIÊN QUAN

Hình 9.1: Tiến trình thẩm định Windows - Bảo mật ASP.NET doc
Hình 9.1 Tiến trình thẩm định Windows (Trang 9)

TỪ KHÓA LIÊN QUAN

w