Bài 9 Bảo mật Website trong Asp.net


Mục tiêu: Hiểu được cơ chế bảo mật Web site. Sử dụng 2 điều khiển trong nhóm Login


1. Tổng quan về aspnetdb Database

Giới thiệu

  • CSDL aspnetdb dùng để quản lý các user profiles, roles, membership và các thông tin cá nhân khác
  • Áp dụng cho ASP.Net 2.0 Web Application
  • Không được tạo ra khi cài đặt SQL Server 2005 Enterprise/ Express Edition
  • Được tạo tự động khi sử dụng công cụ WAT và lưu trữ trong thư mục App_Data

Tạo aspnetdb Database

Tạo thủ công:

  • Start => Programs => Microsoft Visual Studio 2005 => Visual Studio Tools => Visual Studio 2005 Command Prompt
  • Gõ lệnh aspnetdb_regsql

2. Các nguyên tắc bảo mật của ASP.Net

Các khái niệm bảo mật

  • Authentication: xác định user là ai
  • Authorization: xác định quyền hạn của user
  • Impersonation: là option tùy chọn, dùng Code để xử lý giới hạn truy xuất

Mô hình bảo mật ASP.Net

  • IIS xác thực người dùng
  • Nếu thành công, nó chuyển yêu cầu đến ASP.Net với thông tin đã được chứng thực
  • Nếu ASP.Net xác thực thành công, nó cho phép gởi yêu cầu đến các trang .aspx hoặc web services,
  • Khi ASP.Net Code yêu cầu tài nguyên (mở file hoặc connect đến CSDL), hệ điều hành sẽ tiến hành kiểm tra

Mô hình bảo mật ASP.Net

Các chiến lượt bảo mật

  1. Cho phép các user nặc danh (anonymous users) nhưng sử dụng chứng thực forms để bảo mật từng phần trong Website. Nếu có user đăng nhập thì nó sẽ tiến hành xác thực user đó
  2. Cấm các user nặc danh và sử dụng chứng thực của IIS để bắt buộc user đăng nhập theo chứng thực Windows, Basic hoặc Digest (yêu cầu user có account trên server) => Thích hợp với mạng Intranet

Chứng thực website

  • Windows Authentication:
    • IIS sẽ xác thực user dựa trên Windows account
    • Ưu điểm: trong suốt với người dùng, và có thể dùng code để kiểm tra thông tin tài khoản
    • Khai báo:
      • Cài đặt chế độ chứng thực là Windows trong tập tin Web.config
      • Tắt quyền truy xuất user nặc danh (trong IIS hoặc trong tập tin Web.config)
      • Cấu hình Windows account trên Web server (nếu chưa có )

Khai báo: minh hoạ khai báo chứng thực (Khai báo trong tập tin Web.config)

<configuration>
  <system.web>
    <authentication mode="Windows" />
  </system.web>
</configuration>

Khai báo: minh hoạ cấp quyền (Khai báo trong tập tin Web.config)

<configuration>
  <system.web>
    <authentication mode="Windows" />
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</configuration>

Hoặc khai báo trong IIS: chọn thư mục ảo, nhấn phím phải chuột => chọn Properties

Khai báo cấp quyền bằng tool trong asp.net

  • Forms Authentication:
    • Xác thực user dựa trên CSDL aspnetdb
    • Khai báo:
      • Cài đặt chế độ chứng thực là Forms trong tập tin Web.config
      • Giới hạn quyền truy xuất tập tin/thư mục của các user nặc danh
      • Tạo trang Đăng nhập - Login

3. Giới thiệu công cụ WAT

Giới thiệu

  • WAT – Website Administration Tool – dùng để xem và cấu hình website
  • Các thao tác trên WAT sẽ làm thay đổi tập tin Web.config
  • Thao tác: trên thực đơn, chọn Website => ASP.NET Configuration

Tạo User và Role

Cấp quyền truy xuất thư mục, tập tin cho user và Role

4. Tạo trang Đăng nhập

Giới thiệu và thao tác tạo

  • Áp dụng cho Forms Authentication
  • Dùng để chứng thực người dùng (kiểm tra userName và password) Khai báo trong tập Web.config:
<configuration>
  <system.web>
    <authentication mode="Windows" />
  </system.web>
</configuration>
  • Cấp quyền truy xuất các tập tin/thư mục: dùng WAT hoặc cập nhật trực tiếp Web.config
  • Tạo trang Login.aspx tại thư mục gốc của ứng dụng
  • Dùng điều khiển Login thiết kế chức năng đăng nhập

Điều khiển Login

  • Kết hợp với điều khiển Validator để kiểm tra ô nhập user name và password
  • Tự động kiểm tra thông tin đăng nhập
  • Nếu chọn Remember me next time thì thông tin đăng nhập đựơc lưu trữ xuống cookie
  • Nếu đăng nhập thành công thì mặc định chuyển đến trang Default.aspx ở thư mục gốc
  • Thuộc tính: đa số dùng để thay đổi giao diện của điều khiển

Điều khiển Login trong asp.net

Sự kiện Login

  • LoggingIn:xảy ra trước khi user được xác thực
  • LoggedIn : sau khi user được xác thực
  • LoginError : khi đăng nhập không thành công
  • Authenticate : chủ động xác thực user tùy theo code đựơc viết, điều khiển không tự động thực hiện

Tạo nút Sign Out:

  • Sử dụng lớp FormsAuthentication và phương thức SignOut

Tạo nút Sign Out trong asp.net

Xem thông tin user:

  • Sử dụng thuộc tính User.Identity của Page
    • Name: tên user
    • AuthenticationType: kiểu chứng thực
    • IsAuthenticated: đã được chứng thực chưa
  • Phương thức User.IsInRole(“Tên Role”): kiểm tra user có trong role không

5. Tạo trang Đổi mật khẩu

Giới thiệu

  • Áp dụng cho Forms Authentication
  • Dùng để thay đổi mật khẩu
  • Sử dụng điều khiển ChangePassword

Điều khiển ChangePassword

  • Các thuộc tính và sự kiện tương tự điều khiển Login

6. Profiles

Giới thiệu

  • Cho phép lưu trữ dữ liệu cụ thể của người dùng đã đựơc chứng thực
  • Tương tự Session, chỉ khác là dữ liệu profile không bị mất đi khi Session hết hạn
  • Thuộc namespace System.Web.Profile
  • Khai báo các thuộc tính cần lưu trữ trong Web.config
<configuration>
  <system.web>
    <profile>
      <properties>
        <add name="User_Name" defaultValue=""/>
        <add name="Full_Name" defaultValue=""/>
      </properties>
    </profile>
  </system.web>
</configuration>

7. Thực hiện các bước phân quyền trong ASP.NET

Bước 1: Tạo Sơ đồ trang Web có dạng sau:

Phân quyền trong asp.net ảnh 1

Trang_Chu.aspx liên kết đền 2 trang đó là Admin.aspx và Index.aspx (chưa phân quyền thì chúng ta có thể vào cả 2 trang này mà không cần đăng nhập)

Phân quyền trong asp.net ảnh 2

Trang LogIn.aspx thiết kế như sau:

Phân quyền trong asp.net ảnh 3

Trang Admin.aspx thiết kế như sau:

Phân quyền trong asp.net ảnh 4

Trang Index.aspx thiết kế như sau:

Phân quyền trong asp.net ảnh 5

Bước 2: Click vào ASP.NET Configuration:
Phân quyền trong asp.net ảnh 6

Nó sẽ hiện ra trang web sau:

Phân quyền trong asp.net ảnh 7

Phân quyền trong asp.net ảnh 8

Bước 3: Next
Phân quyền trong asp.net ảnh 9

Bước 4:

From the internet: sử dụng ASP.Net MemberShip. From a local area network : sử dụng windows Authentication

Phân quyền trong asp.net ảnh 10

Bước 5:
Phân quyền trong asp.net ảnh 11

Bước 6:
Phân quyền trong asp.net ảnh 12

Bước 7: Tạo Group phân Quyền

Phân quyền trong asp.net ảnh 13

Bước 8:Tạo User
Phân quyền trong asp.net ảnh 14

Phân quyền trong asp.net ảnh 15

Nếu tạo tiếp thì nhấn nút Continue và tạo các user sau:

  • nhatnam, pass: nhat_nam
  • myhanh, pass: my_hanh
  • mastercode, pass: master_code

Bước 9: Phân quyền thư mục/tập tin cho user:

Cho phép Role Admin truy cập vào thư mục Admin. Cấm tất cả User truy cập vào thư mục Admin
Phân quyền trong asp.net ảnh 16

Cho phép Role Admin và KhachHang truy cập vào thư mục Pages. Cấm tất cả User truy cập vào thư mục Pages.

Phân quyền trong asp.net ảnh 17

Bước 10: Hoàn tất
Phân quyền trong asp.net ảnh 18

Sau khi tạo xong, ta có thể chỉnh sửa Role của các User như sau:

Phân quyền trong asp.net ảnh 19

Phân quyền trong asp.net ảnh 20

Thế là hoàn tất việc cấu hình. Bây giờ chạy chương trình load Trang_Chu.aspx và click vào liên kết Index sẽ hiện ra:

Phân quyền trong asp.net ảnh 21

Đăng nhập nếu dùng tên myhanh và mastercode thì vào được trang Index.aspx

Phân quyền trong asp.net ảnh 5

Đăng nhập nhatnam thì vào được trang Index.aspx và trang Admin.aspx

Phân quyền trong asp.net ảnh 5

Phân quyền trong asp.net ảnh 4

Sau khi phân quyền xong trong cây thư mục web sinh ra ASPNETDB.MDF và có web.config

Phân quyền trong asp.net ảnh 22

Bài viết tiếp theo

Chia sẽ bài viết :