1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Xây dựng ứng dụng web ASP.NET an toàn

68 507 1
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

Tiêu đề Xây Dựng Ứng Dụng Web Asp.net An Toàn
Trường học Trường Đại Học Bách Khoa
Chuyên ngành Công Nghệ Thông Tin
Thể loại Luận Văn
Thành phố Hà Nội
Định dạng
Số trang 68
Dung lượng 868,5 KB

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

Nội dung

Xây dựng ứng dụng web ASP.NET an toàn

Trang 1

MỤC LỤC

MỤC LỤC 1

HÌNH ẢNH 4

Chương 1 – AN TOÀN ỨNG DỤNG WEB 7

1 Các vấn đề cơ bản về an toàn ứng dụng Web 7

2 Thuật tấn công 8

3 Mô hình hiểm họa 9

Chương 2 – AN TOÀN ỨNG DỤNG WEB XÂY DỰNG TRÊN NET FRAMEWORK 11 1 Tổng quan về an toàn ứng dụng Web xây dựng trên NET Framework 11

1.1 Role-Based Security 11

1.2 Code Access Security 13

1.3 Các không gian tên để xây dựng an toàn các ứng dụng trong NET Framework 14

2 Xây dựng các gói assembly an toàn 15

2.1 Các mối đe doạ và biện pháp phòng chống: 15

2.1.1 Truy nhập không được chứng thực hoặc vượt quyền, hoặc cả hai 16

2.1.2 Nhúng mã 17

2.1.3 Phơi bày thông tin: 18

2.1.4 Xáo trộn thông tin: 19

2.2 Các lưu ý khi thiết kế gói assembly 19

2.3 Các lưu ý khi thiết kế lớp 20

3 Xây dựng thành phần dịch vụ an toàn 20

3.1 Các mối hiểm hoạ và các biện pháp phòng chống 20

3.1.1 Nghe lén mạng 21

3.1.2 Truy cập không được chứng thực 21

3.1.3 Sự uỷ quyền không được ràng buộc 22

3.1.4 Phơi bày dữ liệu cấu hình 22

3.1.5 Sự từ chối 22

3.2 Các lưu ý khi thiết kế 22

3.2.1 Chứng thực dựa vào vai 22

3.2.2 Bảo vệ dữ liệu nhạy cảm 23

3.2.3 Các yêu cầu theo dõi 23

3.2.4 Kiểu kích hoạt ứng dụng 23

Trang 2

3.2.5 Các giao tác 23

3.2.6 CAS 23

4 Xây dựng các dịch vụ Web an toàn 24

4.1 Các mối hiểm hoạ và các biện pháp phòng chống: 24

4.1.1 Truy cập không được chứng thực: 24

4.1.2 Thực thi tham số: 25

4.1.3 Nghe lén mạng: 26

4.1.4 Phơi bày dữ liệu cấu hình: 26

4.2 Các lưu ý khi thiết kế 27

4.2.1 Yêu cầu xác thực: 27

4.2.2 Yêu cầu tính riêng tư và tính toàn vẹn 27

4.2.3 Các đặc tính truy cập tài nguyên 28

4.2.4 CAS 28

4.3 Các kỹ thuật với các vấn đề quan trọng nhất 28

4.3.1 Kiểm tra giá trị đầu vào 28

4.3.2 Xác thực 33

4.3.3 Chứng thực 34

Chương 3 – XÂY DỰNG ỨNG DỤNG ASP.NET AN TOÀN 36

1 Mô hình bảo mật trong ASP.NET 36

1.1 Các công nghệ thực thi trong ASP.NET 36

2.2 Kiến trúc bảo mật 36

2 Xây dựng các trang và các điều khiển ASP.NET an toàn 37

2.1 Hiểm hoạ và biện pháp phòng chống 37

2.1.1 Nhúng mã 38

2.1.2 Tấn công session 39

2.1.3 Giả dạng đặc tính nhận dạng 40

2.1.4 Thực thi tham số 41

2.1.5 Nghe lén mạng 42

2.2 Các lưu ý khi thiết kế 43

2.2.1 Kiểm tra đầu vào phía server 43

2.2.2 Khoanh vùng web site 43

2.2.3 Xem xet đặc tính nhận dạng được dùng để truy nhập tài nguyên 44

2.2.4 Bảo vệ thông tin đăng nhập và các thẻ xác thực 44

2.2.5 Lỗi về bảo mật 45

2.2.6 Xem xét về chứng thực tập trung 45

2.2.7 Đặt các điều khiển web và các điều khiển người dùng trong các gói assemblies riêng biệt 45

2.2.8 Đặt mã truy nhập tài nguyên trong một gói assembly riêng 45

2.3 Các kỹ thuật với các hiểm hoạ điển hình 46

2.3.1 Kiểm tra giá trị đầu vào 46

2.3.2 Cross-Site Scripting 51

Trang 3

2.3.3 Xác thực 55

2.3.4 Chứng thực 58

Chương 4 – THIẾT KẾ DEMO 61

1 Dự án Cục tài nguyên môi trường 61

1.1 Mô hình hoá chức năng 61

1.2 Phân rã chức năng ngoại tuyến cấp Cục 61

1.3.1 Hệ thống 62

1.3.2 Các cơ sở gây ô nhiễm 63

1.3.3 Quản lý hồ sơ 63

1.3.4 Quản lý người dùng 64

1.3.5 Quản lý dữ liệu tĩnh cấp cục 64

1.3.6 Thống kê báo cáo 65

2 Thiết kế Web site an toàn 65

2.1 Vấn đề an toàn mà Web site đã làm được 65

2.2 Tăng cường an ninh 65

2.2.1 Đặt mã truy nhập tài nguyên trong một gói assembly riêng 65

2.2.2 Mã hoá xâu kết nối cơ sở dữ liệu 66

Trang 4

HÌNH ẢNH

Hình 1: Các bước tấn công 9

Hình 2: Tiến trình mô hình hiểm hoạ 10

Hình 3: Role-based security 12

Hình 4: Code access security 14

Hình 5: Các security namespaces 15

Hình 6: Các mối đe doạ hàng đầu 16

Hình 7: Các thành phần dịch vụ trong một ứng dụng Enterprise Services tầng giữa.20 Hình 8: Enterprise Services threats 21

Hình 9: Các mối hiểm hoạ chính đối với dịch vụ Web 24

Hình 10: Kiến trúc bảo mật 37

Hình 11: Khoanh vùng web site 44

Hình 12: Mô hình hoá chức năng 61

Hình 13: Phân rã chức năng 62

Hình 14: Hệ thống 62

Hình 15: Cơ sở gây ô nhiễm 63

Hình 16: Quản lý hồ sơ 63

Hình 17: Quản lý người dùng 64

Hình 18: Quản lý dữ liệu tĩnh cấp cục 65

Hinh 19: Thống kê báo cáo 65

Trang 5

LỜI CẢM ƠN

Em xin cảm ơn các thầy cô trong khoa Công nghệ Thông tin trường Đại học Côngnghệ, Đại học Quốc Gia Hà Nội, đặc biệt là các thầy cô ở bộ môn Mạng và truyền thông đãgiúp đỡ chúng em trưởng thành trong những năm học tập tu dưỡng

Em bày tỏ lòng biết ơn đối với PGS – TS Hồ Sỹ Đàm là người đã nhiệt tình hướngdẫn giúp đỡ em, chỉ bảo tận tình, cùng với sự động viên và giúp em vượt qua nhiều khókhăn trong quá trình hoàn thành bản khoá luận này

Khóa luận tốt nghiệp được thực hiện trong khuôn khổ của đề tài: “Tăng cường anninh cho các ứng dụng trên nền NET”

Cuối cùng em xin gửi lời cảm ơn tới tất cả các bạn bè, gia đình đã động viên emtrong quá trình học tập và làm khoá luận tốt nghiệp

Hà Nội, tháng 5 năm 2006Sinh viên

Đặng Hữu Thành

Trang 6

LỜI NÓI ĐẦU

Hiện nay công nghệ NET của Microsoft được sử dụng rất rộng rãi trong việc xây dựng các ứng dụng sử dụng trong thực tế Bên cạnh việc xây dựng ứng dụng thì vấn đề an toàn của một ứng dụng là rất quan trọng, đặc biệt là trong các ứng dụng thương mại điện tử như bán hàng qua mạng, thực hiện chuyển tiền vào tài khoản qua mạng,… NET Framework cung cấp cho ta rất nhiều thư viện dùng để tăng cường an ninh cho ứng dụng.

Khoá luận này trình bày khả năng tăng cường an ninh cho các ứng dụng xây dựng trên nền NET Framework và đặc biệt tập trung vào các ứng dụng Web.

Khoá luận gồm 4 chương:

Chương 1 An toàn ứng dụng Web

Trình bày tổng quan về an toàn ứng dụng web.

Chương 2 An toàn ứng dụng Web xây dựng trên nền NET Framework.

Trình bày tổng quan về an toàn ứng dụng Web xây dựng trên nền NET Framework, các kỹ thuật chính và các thư viện dùng để tăng cường an ninh.

Chương 3 Xây dựng ứng dụng Web ASP.NET an toàn

Nghiên cứu cụ thể về an toàn ứng dụng Web ASP.NET Xây dựng các gói assemblies, các thành phần dịch vụ, các dịch vụ Web, các trang và các điều khiển an toàn Các kiểu tấn công phổ biến và biện pháp phòng chống hữu hiệu.

Chương 4 Thiết kế demo.

Tăng cường an ninh cho web site của Cục bảo vệ tài nguyên môi trường

Trang 7

Chương 1 – AN TOÀN ỨNG DỤNG WEB

1.1 Các vấn đề cơ bản về an toàn ứng dụng Web.

Khi ta nghe nói về an toàn ứng dụng Web, có một khuynh hướng ngay lập tứcnghĩ về các kẻ tấn công làm hỏng Web site, ăn cắp các số credit card, và ném bom cácWeb site với các kiểu tấn công từ chối dịch vụ Ta cũng có thể nghĩ về virus, Trojanhorses, và worms Đây là những vấn đề rắc rối được quan tâm nhất vì chúng đại diện chomột số các hiểm hoạ đáng quan tâm nhất mà các ứng dụng Web ngày nay phải đối mặt

An toàn về cơ bản là việc bảo vệ các tài nguyên quan trọng Các tài nguyên này cóthể là những thứ có thể sờ thấy được như trang Web hoặc cơ sở dữ liệu hoặc có thể lànhững thữ không sờ thấy được như danh tiếng của một công ty

An toàn là một con đường không có đích Mỗi khi phân tích kiến trúc và ứngdụng, ta xác định các hiểm hoạ tiềm tàng và hiểu rằng mỗi hiểm hoạ đại diện cho mộtmức độ rắc rối.Vấn đề an toàn chính là việc quản lý rắc rối và việc thực thi các biện phápphòng chống hữu ích

Các vấn đề cơ bản:

Xác thực

Xác thực trả lời câu hỏi: bạn là ai? Nó là một tiến trình nhận dạng các client củacác ứng dụng và các dịch vụ Đó có thể là người dùng cuối, các dịch vụ, các tiến trình,hoặc là các máy tính Theo cách nói về an toàn thì các client được xác thực được đề cập

tới như là principals

Chứng thực

Chứng thực trả lời câu hỏi: bạn có thể làm gì? Đó là một tiến trình quản lý các tàinguyên và các hoạt động mà client đã được xác thực được cấp quyền truy cập Các tàinguyên bao gồm các tệp, cơ sở dữ liệu, các bảng, hàng, vv…cùng với các tài nguyên mức

hệ thống như dữ liệu cấu hình Các hoạt động bao gồm việc thực thi các giao tác, bánmột sản phẩm, chuyển tiền từ một tài khoản sang một tài khoản khác, vv…

Kiểm tra

Trang 8

Kiểm tra và ghi lại là điểm chính để không từ chối Không từ chối đảm bảo rằngmột người dùng không thể từ chối việc thực thi một hoạt động hay việc khởi tạo một giaotác Ví dụ trong một hệ thống thương mại điện tử, kỹ thuật không từ chối được yêu cầu

để đảm bảo rằng một người dùng không thể từ chối việc đặt 100 quyển sách

Sự tin cậy

Sự cẩn mật cũng được đề cập tới như là privacy, là một tiến tình đảm bảo rằng dữ

liệu vẫn riêng tư và tin cậy và không thể được xem bởi những người dùng không đượcchứng thực hoặc bởi những kẻ nghe lén mạng ( người quản lý giao thông mạng) Mã hoáthường được dùng để đảm bảo sự tin cậy ACL đôi cũng là một phương tiện cho mụcđích này

Sự toàn vẹn

Toàn vẹn đảm bảo rằng dữ liệu được bảo vệ khỏi việc chỉnh xửa vô tình hay cố ý

Sự riêng tư và sự toàn vẹn là vấn đề quan tâm chính, đặc biệt là với dữ liệu truyền quamạng Về cơ bản ta có thể sử dụng kỹ thuật băm và MAC để đảm bảo sự toàn vẹn

Sự sẵn sàng

Nghĩa là hệ thống vẫn sẵn sàng với những người dùng hợp pháp Nhiều kẻ tấncông sử dụng các hành động tấn công từ chối dịch vụ để phá hỏng một ứng dụng đểngười dùng khác không thể truy cập ứng dụng

Ta không thể thiết kế và xây dựng một ứng dụng Web an toàn cho tới khi ta biếtcác hiểm hoạ Một qui tắc quan trọng để xác định mẫu thiết kế ứng dụng đó là việc môhình hiểm hoạ Mục đích của việc mô hình hiểm hiểm hoạ là để phân tích kiến trúc củaứng dụng, thiết kế và xác định các vùng yếu tiềm tàng có thể cho phép một người dùnghoặc một kẻ tấn công với ý đồ xấu làm hại tới sự an toàn của hệ thống

Việc thiết kế và phát triển phần mềm ứng dụng cần được hỗ trợ bởi việc cấu hình

an toàn mạng, máy chủ và ứng dụng trên máy chủ nơi ứng dụng được phát hành

1.2 Thuật tấn công

Các bước trong phương pháp tấn công thể hiện ở hình dưới đây

Trang 9

1.3 Mô hình hiểm họa

Mô hình hiểm hoạ nên được sử dụng trong suốt quá trình thiết kế ứng dụng cũngnhư trong suốt vòng đời của ứng dụng Có hai lý do để làm như vậy Thứ nhất, không thểxác định toàn bộ hiểm hoạ có thể xảy ra Thứ hai, vì các ứng dụng hiếm khi tĩnh và cầnnâng cấp và sửa lại cho phù hợp với sự thay đổi các yêu cầu nghiệp vụ

Trang 10

Hình 2: Tiến trình mô hình hiểm hoạ

 Xác định các tài nguyên có giá trị

 Lập một kiến trúc tổng quan bao gồm các hệ thống con, các rào cản tin cậy, vàdòng chảy dữ liệu

 Phân tích ứng kiến trúc của ứng dụng, bao gồm hạ tần mạng và máy chủ, tạo mộtchiến lược an toàn cho ứng dụng Mục tiêu của chiến lược này là để nhận ra cácđiểm yếu trong thiết kế, thi hành hoặc cấu hình phát hành của ứng dụng

 Xác định các hiểm hoạ có thể ảnh hưởng tới ứng dụng

 Lập tài liệu các hiểm hoạ

 Đánh giá các hiểm hoạ để chỉ ra hiểm hoạ nguy hiểm nhất

Trang 11

Chương 2 – AN TOÀN ỨNG DỤNG WEB XÂY DỰNG

TRÊN NET FRAMEWORK

2.1 Tổng quan về an toàn ứng dụng Web xây dựng trên NET

là một nhóm Windows Nếu ứng dụng của chúng ta sử dụng các dạng xác thực khác thìmột vai là một ứng dụng được định nghĩa và người dùng và chi tiết vai được giữ trong SQLServer hay các nơi lưu trữ người dùng trong Active Directory

Đặc tính nhận dạng của người dùng được xác thực và tư cách vai thành viên đượckết hợp của nó sẵn có cho các ứng dụng Web qua đối tượng Principal, đối tượng này đượcđính kèm vào yêu cầu Web hiện tại

Hình 3 cách sử dụng Role-based security trong ứng dụng Web để hạn chế ngườidùng truy cập tới các trang Web, mức nghiệp vụ, các hoạt động và dữ liệu

Trang 12

Principals and Identities

Role-based security được thực thi với các đối tượng Principal và Identity Đặc tính

nhận dạng và vai thành viên của người dùng đã xác thực được phơi bày qua đối tượng

Principal, đối tượng này được gắn kèm với yêu cầu Web hiện tại Chúng ta có thể sử dụng thuộc tính HttpContext.Current.User để lấy thông tin về đối tượng Nếu người dùng

không được yêu cầu xác thực với ứng dụng chẳng hạn người dùng đang duyệt một phần có

Trang 13

thể truy cập công cộng của site thì đối tượng Principal đại diện cho người dùng Internet ẩn

danh

Có nhiều loại đối tượng Principal và dùng loại nào là tùy thuộc vào kỹ thuật xácthực mà ứng dụng đó sử dụng Tuy vậy, tất cả các đối tượng Principal đều thực thi

interface System.Security.Principal.IPrincipal và tất cả được lưu dữ trong một danh sách

các vai mà người dùng là thành viên của nó

Các đối tượng chính cũng chứa các đối tượng Identity Đối tượng này chứa tên

người dùng và các cờ để xác minh kiểu xác thực và xác minh người dùng đã được xác thựcrồi hay chưa Có các loại đối tượng Identity khác nhau tuỳ thuộc vào loại xác thực, nhưngtất cả đều thực thi interface System.Security.Principal.IIdentity

The following table shows the range of possible authentication types and the

different types of Principal and Identity objects that ASP.NET Web applications use.

Bảng dưới đây là các loại xác thực và các loại đối tượng Principal và Identity màứng dụng web ASP.NET sử dụng

Kiểu xác thực Loại Principal và Identity Chú thích

WindowsIdentity

Việc xác minh là tự động và sử dụng

SAM hoặc Active Directory

Windows Groups được dùng cho các

2.1.2 Code Access Security

Bảo mật truy nhập mã cấp quyền cho đoạn mã khi nó cố gắng truy cập tới các tàinguyên được bảo mật như: file system, registry, network,… hoặc khi nó cố gắng thực thicác hoạt động đặc quyền khác như: gọi tới các đoạn mã không được quản lý hoặc sử dụngreflection

Trang 14

Bảo mật truy nhập mã là một kỹ thuật rào cản bổ xung quan trọng, ta có thể sử dụng

để cung cấp các ràng buộc vào một phần nhỏ của đoạn mã Một người quản trị có thể cấuhình chính sách bảo mật truy nhập mã để hạn chế các loại tài nguyên mà mã có thể truy cập

và các hoạt động đặc quyền khác có thể thực hiện Đối với một ứng dụng Web, một kẻ tấncông có thể chiếm điều khiển của một tiến trình của nó hoặc nhúng mã để thực thi bêntrong tiến trình đó, các ràng buộc thêm vào mà bảo mật mã cung cấp có thể hạn chế sự pháhuỷ khi các hành động này được thực hiện

Hình 4 minh hoạ hoạt động logic của code access security

Hình 4: Code access security

Việc xác thực mã dựa vào bằng chứng về mã chẳng hạn như: tên, nhà phân phối,thư mục cài đặt Còn việc chứng thực dựa vào các quyền truy cập mã

2.1.3 Các không gian tên để xây dựng an toàn các ứng dụng trong NET

Trang 15

2.2 Xây dựng các gói assembly an toàn

2.2.1 Các mối đe doạ và biện pháp phòng chống:

Hiểu các mối đe doạ và các kiểu tấn công chung giúp chúng ta nhận ra các phương

án phòng chống tương ứng và cho phép chúng ta xây dựng các gói assemblies an hoàn vàvững chắc hơn Các mối đe doạ chính:

 Truy cập không được chứng thực hoặc sự vượt quyền, hoặc cả hai

 Nhúng mã

Trang 16

 Phơi bày thông tin.

 Làm xáo trộn thông tin

Hình 6: Các mối đe doạ hàng đầu

a Truy nhập không được chứng thực hoặc vượt quyền, hoặc cả hai

Các rắc rối với truy cập không được chứng thực có thể dẫn tới sự vượt quyền, tức làmột người dùng không được chứng thực hoặc mã không được chứng thực có thể gọi thưviện của bạn và thực thi các hoạt động đặc quyền và truy cập tới tài nguyên bị hạn chế

 Các điểm yếu:

Bao gồm:

 Sự chứng thực dựa vào vai là yếu ớt hoặc thiếu chặt chẽ

 Các kiểu bên trong và các kiểu thành viên bị phơi bày một cách tình cờ

 Sử dụng các khẳng định truy nhập mã và các yêu cầu liên quan không an toàn

 Không khai báo bịt kín và không hạn chế truy cập các lớp cơ sở, điều này cho phép mã bất kỳ dẫn xuất từ chúng

Trang 17

 Các hành động tấn công:

Bao gồm:

 Một tấn công nhử mồi ở nơi mà mã ác ý truy cập vào thư viện của bạn quamột thư viện trung gian đáng tin bằng cách vượt qua các kỹ thuật chứngthực

 Mộ tấn công ở nơi mà mã ác ý vượt qua các điều khiển truy cập bằng việcgọi trực tiếp các lớp mà không định dạng phần API công cộng của thư viện

Kẻ tấn công thực thi mã đặc biệt, mà đoạn mã này sử dụng ngữ cảnh bảo mật mức

xử lý của gói assembly Rắc rối được sinh ra nếu gói assembly gọi mã không được quản lý

và nếu gói assembly thực thi một tài khoản đặc quyền

Trang 18

 Kiểm tra các tham số đầu vào.

 Kiểm tra dữ liệu được truyền qua các API không được quản lý

 Không chấp nhận các ứng viên từ nguồn không đáng tin

 Sử dụng các ứng viên có kiểu mạnh và từ chối các quyền trước khi gọi ứng viên

 Thực thi các gói assembly bằng việc sử dụng các tài khoản ít đặc quyền nhất

c Phơi bày thông tin:

Các gói assembly có thể hứng chịu việc phơi bày thông tin nếu chúng rò rỉ những

 Cố gắng gây lỗi bằng việc truyền đầu vào nguy hiểm cho gói assembly

Sử dụng ILDASM trong một gói assembly để che kín các thông tin bí mật.

 Các phương án phòng chống:

Bao gồm:

 Kiểm tra chặt chẽ đầu vào

 Nắm bắt ngoại lệ có cấu trúc và trả về các lỗi chung cho máy khách

Trang 19

 Không lưu thông tin bí mật trong mã.

d Xáo trộn thông tin:

Các rắc rối với sự xáo trộn thông tin là gói assembly của ta bị chỉnh sửa bằng việclựa chọn các chỉ thị MSIL trong các file DLL hoặc EXE

2.2.2 Các lưu ý khi thiết kế gói assembly

Một trong những vấn đề quan trọng nhất khi thiết kế một gói assembly là mức độtin cậy của môi trưòng mà gói assembly này được sử dụng Nó ảnh hưởng tới các quyềnbảo mật truy nhập mã được cấp cho mã của chúng ta và với mã gọi mã của chúng ta.Điều này được xác định bởi chính sách bảo mật truy nhập mã được định nghĩa bởi ngườiquản trị và nó ảnh hưởng tới các loại tài nguyên mà mã của chúng ta được cho phép đểtruy cập và các hoạt động đặc quyền khác có thể thực thi

Khi thiết kế một gói assembly, ta nên:

 Xác định mã đặc quyền

 Xác định mức độ tin cậy của môi trường mà gói assembly sẽ thực thi

 Đóng gói các mã đặc quyền cấp cao

 Thiết kế giao diện công cộng

Trang 20

2.2.3 Các lưu ý khi thiết kế lớp

Hình 7: Các thành phần dịch vụ trong một ứng dụng Enterprise Services tầng giữa

Trang 21

2.3.1 Các mối hiểm hoạ và các biện pháp phòng chống

Các mối hiểm hoạ bao gồm:

Nghe lén mạng

 Truy cập trái phép

 Sự uỷ quyền không được ràng buộc

 Phơi bày dữ liệu cấu hình

 Sự từ chối

Hình 8: Enterprise Services threats

a Nghe lén mạng

Các ứng dụng Enterprise Service thường chạy trên các server ứng dụng tầng giữa,

từ Web server từ xa Vì vậy các dữ liệu nhạy cảm phải được bảo vệ tránh những kẻ nghelén mạng Ta có thể sử dụng Internet Protocol Security (IPSec) để mã hoá kênh truyền giữaserver Web và ứng dụng Giải pháp này thường được sử dụng tại các trung tâm dữ liệuInternet Các thành phần dịch vụ cũng hỗ trợ xác thực gói tin triệu gọi từ xa (RPC), nócung cấp kỹ thuật mã hoá theo gói

b Truy cập không được chứng thực

Cho phép chứng thực dựa vào vai COM+ ta có thể ngăn truy cập ẩn danh và cungcấp chứng thực dựa vào vai để điều khiển truy cập tới các hoạt động bị hạn chế

Trang 22

c Sự uỷ quyền không được ràng buộc

Nếu ta cho phép uỷ quyền trên Windows 2000 để cho phép một server từ xa truycập tài nguyên mạng bằng cách sử dụng thẻ ẩn danh của client thì sự uỷ quyền không bịràng buộc Nghĩa là không hạn chế số bước nhảy mạng có thể được tạo ra

d Phơi bày dữ liệu cấu hình

Nhiều ứng dụng lưu dữ liệu nhạy cảm như chuỗi kết nối trong COM+ catalog bằngcách sử dụng chuỗi khởi tạo dối tượng Các chuỗi này được lấy về và được truyền tới mộtđối tượng bởi COM+ khi đối tượng được tạo Dữ liệu cấu hình nhạy cảm nên được mã hoálưu trong catalog

d Sự từ chối

Hiểm họa từ chối xảy ra khi một người dùng từ chối việc thực thi một hoạt độnghoặc một giao tác, và ta không có đủ bằng chứng để chống lại yêu cầu đó Ta cần theo dõiqua tất cả các tầng ứng dụng Các thành phần dịch vụ nên ghi lại hoạt động của người dùng

ở tần giữa Các thành phần dịch vụ thường có quyền truy cập tới các đặc tính nhận dạngcủa lần triệu gọi khởi tạo vì các ứng dụng Web font-end thường cho phép ẩn danh trongcác ngữ cảnh Enterprise Service

2.3.2 Các lưu ý khi thiết kế

Bao gồm:

 Chứng thực dựa vào vai

 Bảo vệ các dữ liệu nhạy cảm

 Kiểm tra các yêu cầu

 Kiểu kích hoạt ứng dụng

 Các giao tác

 Bảo mật truy nhập mã

a Chứng thực dựa vào vai

Chứng thực dựa vào vai bằng cách sử dụng các vai COM+ đảm bảo rằng ngữ cảnhbảo mật của lần triệu gọi đầu tiên được dùng cho việc triệu cuộc gọi thành phần dịch vụ.Điều này cho phép ta thực thi chứng thực dựa theo vai dựa vào thành viên nhóm của lần

Trang 23

triệu gọi Nếu một ứng dụng Web ASP.NET gọi các thành phần dịch vụ, điều này có nghĩa

là ứng dụng Web cần ẩn cuộc gọi của nó trước khi gọi thành phần dịch vụ

b Bảo vệ dữ liệu nhạy cảm

Nếu các thành phần dịch vụ giữ dữ liệu nhạy cảm như chi tiết công nhân, giao dịchtài chính, vv…,thì cần chú ý bảo vệ dữ liệu khi nó truyền qua mạng Nếu ứng dụng của takhông chạy trong một môi trường Internet Data Center (IDC) an toàn ( không sử dụngIPSec) thì cần sử dụng mã hoá RPC Theo cách này ta có thể sử dụng mức xác thức PacketPrivacy

c Các yêu cầu theo dõi

Để chỉ ra các hiểm hoạ từ chối, các giao tác nhạy cảm được thực thi bởi các thànhphần Enterprise Service nên được ghi lại Khi thiết kế cần chú ý các loại giao tác và các chitiết cần được theo dõi Ít nhất là đặc tính nhận dạng khởi tạo một giao tác và đặc tính nhậndạng được dùng để thực hiện giao tác

d Kiểu kích hoạt ứng dụng

Khi thiết kế phải xác định kiểu kích hoạt thành phần dịch vụ Ta có thể kích hoạtchúng bằng cách sử dụng một thể hiện của tiến trình Dllhost.exe hoặc ta có thể chạy chúngtrong một tiến trình client Các ứng dụng server chạy ngoài tiến trình trong một thể hiệncủa Dllhost.exe Các ứng dụng thư viện chạy trong không gian địa chỉ của tiến trình củaclient

e Các giao tác

Nếu ta sử dụng các giao tác phân tán thì chú ý nơi giao tác được khởi tạo và chú ý

sự liên quan của các giao tác đang thực thi giữa các thành phần và trình quản lí tài nguyên

bị ngăn bởi tường lửa Trong ngữ cảnh này tường lửa phải được cấu hình để hỗ trợ giaothông Microsoft Distributed Transaction Coordinator (DTC)

f CAS

Các ứng dụng sử dụng các thành phần dịch vụ hoàn toàn tin cậy và vì vậy CAS hạn chế sử dụng để chứng thực việc triệu gọi mã Tuy nhiên Enterprise Service yêu cầu rằng việc gọi mã có quyền cần thiết để gọi mã không được quản lý Sự liên quan chính của vấn đề này là ta không thể gọi trực tiếp một ứng dụng Enterprise Service từ một ứng

Trang 24

dụng Web tin cậy một phần Các mức tin cậy một phần của ASP.NET (High, Medium, Low, và Mininal) không cấp quyền cho mã không được quản lý

2.4 Xây dựng các dịch vụ Web an toàn

2.4.1 Các mối hiểm hoạ và các biện pháp phòng chống:

Các mối hiểm hoạ chính bao gồm:

Truy cập không đựơc chứng thực

Thực thi tham số

Nghe lén mạng

Phơi bày dữ liệu cấu hình

Lặp lại thông báo

Hình 9: Các mối hiểm hoạ chính đối với dịch vụ Web

a Truy cập không được chứng thực:

Các dịch vụ web mà cung cấp thông tin nhạy cảm hoặc hạn chế nên xác thực vàchứng thực các cuộc gọi đến nó Xác thực và chứng thực yếu ớt có thể bị khám phá để đạtđược truy cập không chứng thực tới các thông tin và các hoạt động nhạy cảm

 Các điểm yếu:

Bao gồm:

 Không sử dụng chức năng xác thực

Trang 25

 Mật khẩu ở dạng văn bản nguyên mẫu trong phần đầu mẩu tin của SOAP

 Chức năng xác thực cơ bản sử dụng trên khênh giao tiếp không đươc mãhoá

 Các biện pháp phòng chống:

Bao gồm:

 Sử dụng mật khẩu số hoá trong SOAP header cho kỹ thuật xác thực

 Sử dụng các vé Kerberos trong SOAP header cho kỹ thuật xác thực

 Sử dụng các chứng chỉ X.509 trong SOAP header cho kỹ thuật xác thực

 Sử dụng chức năng xác thực của Windows

 Sử dụng role-based authorization để hạn chế truy cập tới các dịch vụ Web Điều này có thể được thực hiện bằng cách sử dụng kỹ thuật chứng thực URL

để điểu khiển truy cập tới tệp dịch vụ Web (.asmx) hoặc ở mức phương thức web bằng việc sử dụng các yêu cầu quyền Principal

b Thực thi tham số:

Sự thực thi tham số đề cập tới sự chỉnh sửa dữ liệu không được chứng thực đượcgửi giữa người sử dụng dịch vụ web và dịch vụ web Ví dụ, một kẻ tấn công có thể chặnmột thông báo dịch vụ web( khi thông báo truyền qua các nốt trung gian tới đích) và cóthể chỉnh sủa nó trước khi gửi cho đích đang cần nó

Các điểm yếu:

Bao gồm:

 Các thông báo không được ký số

 Các thông báo không được mã hoá

Trang 26

c Nghe lén mạng:

Một kẻ tấn công có thể xem các thông báo của dịch vụ web khi chúng được truyềnqua mạng Ví dụ: một kẻ tấn công có thể sử dụng phần mềm quản lý mạng để lấy dữ liệunhạy cảm chứa trong thông báo SOAP Thông báo này có thể chứa dữ liệu nhạy cảm mứcứng dụng hoặc là thông tin quan trọng

 Các điểm yếu:

Bao gồm:

 Các thông tin hợp pháp trong SOAP header ở dạng văn bản nguyên mẫu

 Không mã hoá ở mức thông báo

 Không mã hoá ở mức giao vận

d Phơi bày dữ liệu cấu hình:

Có 2 trường hợp chính mà 1 dịch vụ Web có thể phơi bầy dữ liệu cấu hình Thứnhất, một dịch vụ Web có thể hỗ trợ việc tạo tự động của WSDL hoặc có thể cung cấpthông tin WSDL trong các tệp có tể tải về sẵn có trên Web server

Thứ hai, với việc nắm bắt ngoại lệ không tương ứng, dịch vụ web có thể phơi bàychi tiết thực thi bên trong

Các điểm yếu:

Bao gồm:

 Các tệp WSDL không bị hạn chế có thể tải về từ Web server

Trang 27

 Một dịch vụ Web được hạn chế hỗ trợ việc tạo tự động của WSDL và chophép những người dùng không được chứng thực lấy được các đặc điểm củadịch vụ Web.

Các biện pháp phòng chống:

Bao gồm:

 Chứng thực truy cập tới các tệp WSDL bặng cách sử dụng các quyền NTFS

 Huỷ bỏ các tệp WSDL từ Web server

 Không cho phép giao các giao thức tài liệu hoạt đọng để tránh sự sinh tựđộng của WSDL

Nắm bắt và đưa ra các ngoại lệ SoapException hoặc SoapHeaderException - chỉ trả về máy khách các thông tin tối thiểu và vô

hại

2.4.2 Các lưu ý khi thiết kế

Bao gồm:

 Yêu cầu xác thực

 Yêu cầu tính riêng tư và toàn vẹn

 Các đặc tính truy nhập tài nguyên

 An toàn truy nhập mã

a Yêu cầu xác thực:

Nếu dịch vụ Web cung cấp thông tin nhạy cảm hoặc nên hạn chế, nó cần xác thựccác cuộc gọi để hỗ trợ cho việc chứng thực Trong môi trường Windows, ta có thể sửdụng Windows authentication

b Yêu cầu tính riêng tư và tính toàn vẹn.

WSE cung cấp việc kiểm tra tính toàn vẹn thông qua chữ ký số và nó cũng hỗ trợ

mã hoá XML để mã hoá các yếu tố nhạy cảm của toàn bộ thông báo Ưu điểm của hướngtiếp cận này là dựa vào chuẩn WS-Security và nó cung cấp một giải pháp đối với cácthông báo truyền qua nhiều nốt trung gian

Trang 28

Để mã hoá tầng giao vận ta sử dụng các kênh SSL hoặc IPSec Các giải pháp nàychỉ áp dụng khi ta nắm quyền điều khiển cả 2 điểm đầu cuối.

c Các đặc tính truy cập tài nguyên

Mặc định các dịch vụ Web ASP.NET không giả danh và tài khoản xử lý ASPNET

có đặc quyền thấp nhất được sử dụng cho việc truy cập tài nguyên cục bộ và từ xa Ta cóthể sử dụng tài khoản này để truy nhập các tài nguyên từ xa như SQL Server (yêu cầu xácthực Windows) bằng cách tạo một tài khoản cục bộ tham chiếu tới máy chủ CSDL

d CAS

Mức độ tin cậy của dịch vụ Web được xác định bằng việc cấu hình yếu tố <trust>,

nó ảnh hưởng đến các loại tài nguyên mà nó có thể truy cập và tới các hoạt động đặcquyền mà nó có thể thực thi

Nếu triệu gọi một dịch vụ Web từ một ứng dụng Web ASP.NET thì mức độ tincậy của ứng dụng Web xác định phạm vi của các dịch vụ Web mà nó có thể triệu gọi Ví

dụ, một ứng dụng Web được cấu hình mặc định với độ tin cậy là Medium chỉ có thể triệu

gọi các dịch vụ Web trên máy cục bộ

2.4.3 Các kỹ thuật với các vấn đề quan trọng nhất.

a Kiểm tra giá trị đầu vào

Cũng như bất kỳ ứng dụng nào mà chấp nhận dữ liệu đầu vào, các dịch vụ Webphải kiểm tra dữ liệu được truyền tới chúng để ép buộc các nguyên tắc nghiệp vụ và đểtránh các vấn đề an toàn tiềm tàng Các phương thức Web được đánh dấu với thuộc tính

WebMethod là các điểm vào của dịch vụ web Các phương thức Web có thể chấp nhận

các tham số đầu vào định kiểu rõ ràng hoặc các tham só định kiểu lỏng lẻo, chúng thườngđược truyền như dữ liệu kiểu xâu

Các tham số định kiểu rõ ràng:

Nếu ta sử dụng các tham số định kiểu rõ ràng được mô tả bởi hệ thống kiểu

trong NET Framework, ví dụ kiểu integer, double, date hoặc các loại đối tượng khác như Address hoặc Employee, lược đồ XSD tự động được tạo chứa một mô tả kiểu của dữ

liệu Các thành phần tiêu dùng có thể sử dụng mô tả định kiểu này để khởi tạo một XMLđược định dạng tương ứng với các yêu cầu SOAP được gửi tới các phương thức Web

Sau đó ASP.NET sử dụng lớp System.Xml.Serialization.XmlSerializer không xuất

Trang 29

thông báo SOAP vào các đối tượng CLR Ví dụ sau cho thấy một phương thức Web chấpnhận một đầu vào được định kiểu rõ ràng:

[WebMethod]

public void CreateEmployee(string name, int age, decimal salary) { }

Trong ví dụ trên, hệ thống kiểu NET Framework thực hiện các kiểm tra kiểu một

cách tự động Để kiểm tra pham vi của các ký tự được cung cấp thông qua trường name,

ta có thể sử dụng một biểu thức phổ biến Ví dụ, đoạn mã sau đây cho thấy cách sử dụng

lớp System.Text.RegularExpressions.Regex để ràng buộc phạm vi có thể của các ký tự

đầu vào và cũng để kiểm tra độ dài tham số

public void CreateEmployee(Employee emp) { }

Các thành phần sử dụng cần biết lược đồ XSD để có thể triệu gọi dịch vụ Web.Nếu thành phần sử dụng là một ứng dụng NET Framework client, nó có thể truyền mộtđối tượng Employee một cách đơn giản như sau:

using Employees;

Employee emp = new Employee();

// Populate Employee fields

// Send Employee to the Web service

wsProxy.CreateEmployee(emp);

Các tham số định kiểu lỏng lẻo:

Nếu ta sử dụng tham số kiểu string hoặc các mảng kiểu byte để truyền dữ liệu hợp

lệ, ta sẽ đánh mất nhiều lợi ích của hệ thống kiểu NET Framework Ta phải chuyển kiểu

dữ liệu đầu vào để kiểm tra nó bởi vì WSDL được tạo tự động một cách đơn giản mô tả các

Trang 30

tham số như là đầu vào kiểu string của kiểu xsd:string Ta cần lập chương trình kiểm trakiểu, độ dài, định dạng và phạm vi như dưới đây:

Việc kiểm tra dữ liệu đầu vào phải được kiểm tra bởi phương thức Web trước khi

nó được xử lý hoặc được truyền tới các thành phần

Client và server phải đánh giá và chấp nhận cho một lược đồ XML Đoạn mã dướiđây cho thấy cách một phương thức Web có thể sử dụng lớp

System.XmlValidatingReader để kiểm tra dữ liệu đầu vào Ví dụ này mô tả một hành

động đặt sách đơn giản Chú ý rằng dữ liệu XML được truyền qua một tham số kiểu

string đơn giản.

using System.Xml;

Trang 31

// Create and load a validating reader

XmlValidatingReader reader = new XmlValidatingReader(xmlBookData,

// Set the validation type for XSD schema.

// XDR schemas and DTDs are also supported

reader.ValidationType = ValidationType.Schema;

// Create and register an event handler to handle validation errors

reader.ValidationEventHandler += new ValidationEventHandler(

Trang 32

// Validation error event handler

private static void ValidationErrors(object sender, ValidationEventArgs args)

<xsd:element name="title" type="xsd:string" />

<xsd:element name="isbn" type="xsd:integer" />

<xsd:element name="orderQuantity" type="xsd:integer"/>

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

Trang 33

Nhúng SQL

Nhúng SQL cho phép một kẻ tấn công để thực thi các lệnh hợp pháp trong cơ sở

dữ liệu bằng cách sử dụng đăng nhập cơ sở dữ liệu của dịch vụ Web Nhúng SQL là mộtvấn đề tiềm tàng đối với dịch vụ Web nếu các dịch vụ sử dụng dữ liệu đầu vào để khởitạo các truy vấn SQL

b Xác thực

Nếu dịch vụ Web xuất ra dữ liệu nhạy cảm, bị hạn chế hoặc nếu nó cung cấp cácdịch vụ bị hạn chế thì nó cần xác thực cuộc triệu gọi Nhiều lược đồ xác thực sẵn có và cóthể chia chúng làm 3 nhóm:

 Xác thực mức nền tảng

 Xác thực mức thông báo

 Xác thực mức ứng dụng

Xác thực mức nền tảng:

Nếu ta nắm quyền điều khiển cả hai điểm đầu cuối và cả hai điểm này cùng một

miền, ta có thể sử dụng Windows authentication để xác thực cuộc gọi.

Basic Authentication:

You can use IIS to configure your Web service's virtual directory for Basicauthentication With this approach, the consumer must configure the proxy and providecredentials in the form of a

Có thể sử dụng IIS để cấu hình thư mục ảo của dịch vụ Web được xác thực với

Basic authentication Với hướng tiếp cận này, người tiêu dùng phải cấu hình proxy và

cung cấp các thông tin đăng nhập trong dạng của một tên và mật khẩu Sau đó Proxytruyền chúng với mỗi yêu cầu dịch vụ Web qua proxy Các thông tin đăng nhập đượctruyền ở dạng văn bản nguyên mẫu và vì vậy ta nên sử dụng Basic authentication vớiSSL

Integrated Windows Authentication:

Có thể sử dụng IIS để cấu hình thư mục ảo của dịch vụ Web được xác thực ở trạngthái Integrated Windows authentication, sử dụng xác thực kiểu Kerberos hoặc NTLM tuỳthuộc vào môi trường phía client hoặc server Ưu điểm của hướng tiếp cận này so sánh

Trang 34

với Basic authentication là các thông tin đăng nhập không được truyền qua mạng, điềunày hạn chế hiểm hoạ nghe lén mạng

Để gọi một dịch vụ Web được cấu hình ở trạng thái Integrated Windows authentication, người dùng phải cấu hình chính xác thuộc tính Credential trong proxy.

Để dẫn một ngữ cảnh an toàn Window của client tới một dịch vụ Web ta có thể đặt thuộc

tính Credential của proxy của dịch vụ Web thành CredentialCache.DefaultCredential

như sau:

proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Ta có thể sử dụng một bộ thông tin đăng nhập chính xác:

CredentialCache cache = new CredentialCache();

cache.Add( new Uri(proxy.Url), // Web service URL

Chứng thực phương thức Web

Ta có thể sử dụng các yêu cầu quyền principal bằng cách khai báo để điều khiểntruy cập tới các phương thức Web dựa vào đặc tính nhận dạng hoặc vai thành viên củacuộc gọi Đặc tính nhận dạng và vai thành viên của cuộc gọi được duy trì bởi đối tượngprincipal kết hợp với yêu cầu Web hiện tại ( HttpContext.User)

[PrincipalPermission(SecurityAction.Demand, Role=@"Manager")]

[WebMethod]

public string QueryEmployeeDetails(string empID)

{

Ngày đăng: 27/04/2013, 17:46

HÌNH ẢNH LIÊN QUAN

Hình 1: Các bước tấn công . - Xây dựng ứng dụng web ASP.NET an toàn
Hình 1 Các bước tấn công (Trang 9)
Hình 2: Tiến trình mô hình hiểm hoạ - Xây dựng ứng dụng web ASP.NET an toàn
Hình 2 Tiến trình mô hình hiểm hoạ (Trang 10)
Hình 3: Role-based security - Xây dựng ứng dụng web ASP.NET an toàn
Hình 3 Role-based security (Trang 12)
Hình 4 minh hoạ hoạt động logic của code access security - Xây dựng ứng dụng web ASP.NET an toàn
Hình 4 minh hoạ hoạt động logic của code access security (Trang 14)
Hình 5: Các security namespaces - Xây dựng ứng dụng web ASP.NET an toàn
Hình 5 Các security namespaces (Trang 15)
Hình 6: Các mối đe doạ hàng đầu - Xây dựng ứng dụng web ASP.NET an toàn
Hình 6 Các mối đe doạ hàng đầu (Trang 16)
Hình 7: Các thành phần dịch vụ trong một ứng dụng Enterprise Services tầng giữa. - Xây dựng ứng dụng web ASP.NET an toàn
Hình 7 Các thành phần dịch vụ trong một ứng dụng Enterprise Services tầng giữa (Trang 20)
Hình 8: Enterprise Services threats - Xây dựng ứng dụng web ASP.NET an toàn
Hình 8 Enterprise Services threats (Trang 21)
Hình 9: Các mối hiểm hoạ chính đối với dịch vụ Web - Xây dựng ứng dụng web ASP.NET an toàn
Hình 9 Các mối hiểm hoạ chính đối với dịch vụ Web (Trang 24)
Hình 11: Khoanh vùng web site - Xây dựng ứng dụng web ASP.NET an toàn
Hình 11 Khoanh vùng web site (Trang 44)
Hình 12: Mô hình hoá chức năng. - Xây dựng ứng dụng web ASP.NET an toàn
Hình 12 Mô hình hoá chức năng (Trang 61)
Hình 14: Hệ thống - Xây dựng ứng dụng web ASP.NET an toàn
Hình 14 Hệ thống (Trang 62)
Hình 16: Quản lý hồ sơ - Xây dựng ứng dụng web ASP.NET an toàn
Hình 16 Quản lý hồ sơ (Trang 63)
Hình 15: Cơ sở gây ô nhiễm - Xây dựng ứng dụng web ASP.NET an toàn
Hình 15 Cơ sở gây ô nhiễm (Trang 63)
Hình 18: Quản lý dữ liệu tĩnh cấp cục - Xây dựng ứng dụng web ASP.NET an toàn
Hình 18 Quản lý dữ liệu tĩnh cấp cục (Trang 65)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w