Diễn Đàn SEO - vnseo.edu.vn - 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. Bảo mật website ASP.NET là tiêu chí số 1 khi thiết kế ra một website. mình đã tổng hợp và gửi đến các “coder” một số tiêu chí đáng lưu tâm sau đây. Thẩm định Passport Thẩm định Passport cho phép một người dùng có một mật khẩu duy nhất trong khi có thể đăng nhập (địa chỉ e-mail được gắn với tài khoản Passport của họ) vào nhiều ứng dụng hay website. Điều này giúp đơn giản quá trình đăng nhập của người dùng và giảm bớt công việc quản trị khi bảo trì tài khoản người dùng. Để sử dụng được thẩm định Passport trong ASP.NET chúng ta phải download và cài đặt Passport SDK. Sau khi cài đặt Passport SDK, chúng ta cần cấu hình theo cấu trúc tương ứng. Cuối cùng là cấu hình ứng dụng ASP.NET để sử dụng thẩm định Passport, như đoạn mã bên dưới: <?xml version="1.0" encoding="utf-8"?><configuration> <system.web> <authenticationmode="Passport"> <passportredirectUrl="someLocalpage.aspx"/> </authentication> <!-- Other configuration elements --> </system.web></configuration> 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). 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 Mở Internet Services Manager. Ở 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. 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 <applicationname>. 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). 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). 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 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: 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, 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 như sau: <?xml version="1.0" encoding="utf-8"?><configuration> <system.web> <authenticationmode="Windows"/> <!-- Other configuration elements --> </system.web></configuration> 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 đủ. Người dùng sẽ phải đăng nhập khi muốn dùng ứng dụng Nguyên tắc bảo mật website ASP.NET này, bạn áp dụng nó cho những application mà có yêu cầu việc đăng nhập. Việc này có nghĩa là đăng nhập tự động dựa vào cookie sẽ là không được chấp nhận. Tuy người dùng có thể sẽ cảm thấy phiền phức nhưng nếu cho người dùng tự động đăng nhập tự cookie đó sẽ có vô vàn hiểm nguy. Một giải pháp để bảo vệ mật khẩu của bạn trong trường hợp này đó là tắt tính năng Autocomplete của trình duyệt trong những ô điền mật khẩu. Việc này có thể dễ dàng làm được bằng cách thêm autocomplete = “off” cho tag <form> hay <input>. Code: Ngắt kết nối khi người dùng không có tác động đến website sau thời gian mình đưa ra cho bạn 2 lựa chọn để bảo mật website ASP.NET cho vấn đề này. Giải pháp thứ nhất đó là ta sẽ dùng IIS manager rồi sau đó đặt giới hạn cho phiên làm việc ASP với một khoảng thời gian cụ thể hoặc bạn mong muốn trong bao lâu. Ở trong ứng dụng, lưu dữ liệu truy cập vào trong 1 biến phiên làm việc và sau đó sẽ xem xét và kiểm tra ở trên tất cả website mà người dùng duyệt qua. Nếu như thông tin truy cập không nằm trong 1 biến phiên, người dùng đó sẽ bị ngắt kết nối tới website và ứng dụng sẽ cần chuyển hướng họ đến trang đăng nhập hệ thống. nếu như chưa phải tin cậy tuyệt đối, chính bạn hãy viết một đoạn mã để xử lý ngắt kết nối người dùng ở trong “Session_OnEnd ở tệp Global.asa”. Giải pháp bảo mật website ASP.NET này phía client dùng một chút JS(JavaScript), cho thêm đoạn mã sau vào đầu của tất cả những website kết xuất từ ứng dụng Code: Để ngắt kết nối người dùng ứng dụng chúng ta sẽ dùng trang “Logout.ASP”. Với 9000000 mili giây chính là khoảng thời gian lớn nhất mà người sử dụng vẫn có thể giữ phiên làm việc của họ ở trong khi không có một hoạt động nào liên quan đến website của bạn. Như vậy, SecurityBox đã gửi đến các bạn những nguyên tắc bảo mật website ASP.NET giúp bạn có thể bảo mật website của bạn an toàn hơn trước những tin tặc có ý định đánh cắp dữ liệu từ site của bạn. Nguồn: SecurityBox