Sunday, June 27, 2010

Mã hóa thông tin cấu hình trên ASP.NET

Nguồn: http://forum.athena.edu.vn/bao-mat-mang-acns-athena-certified-network-security-security/225-ma-hoa-thong-tin-cau-hinh-tren-asp-net.html
Mã hóa thông tin cấu hình trên ASP.NET

Trong nhiều trường hợp khi triển khai ứng dụng cho khách hàng, bạn sẽ muốn che giấu một số thông tin mang tính chất nhạy cảm đối với ứng dụng của mình như mật khẩu, cấu hình hoạt động... Bài viết này sẽ hướng dẫn bạn các bước để mã hóa các phần của một file cấu hình trong ứng dụng ASP.NET (web.config) sử dụng Protected Configuration. ...

Protected Configuration giúp nâng cao tính bảo mật của một ứng dụng bằng cách cho phép người lập trình mã hóa các thông tin nhạy cảm được lưu trong file Web.config. Bạn có thể sử dụng tiện ích aspnet_regiis.exe để mã hóa các phần (section) của file Web.config và quản lý các key dùng để mã hóa. ASP.NET sẽ tự giải mã file cấu hình khi nó xử lý file này, do vậy, người lập trình không cần giải mã các thông tin này. Trong bài viết này, các bạn sẽ được tìm hiểu:

* Cách mã hóa các phần của file Web.config bằng Protected Configuration
* Truy xuất các phần được mã hóa

1. Cấp quyền truy xuất tới một khóa mã hóa RSA (RSA Encryption Key)

Trước khi ASP.NET có thể giải mã các thông tin được mã hóa trong Web.config, ứng dụng ASP.NET của bạn phải có quyền truy xuất (read access) tới khóa mã hóa được sử dụng để mã hóa và giải mã các thông tin này. Bài hướng dẫn này sử dụng provider mặc định là RsaProtectedConfigurationProvider được xác định trong file Machine.config. Đối tượng chứa các khóa RSA được sử dụng bởi provider mặc định này có tên là "NetFrameworkConfigurationKey".
Cấp phép cho ứng dụng ASP.NET truy xuất đến phần chứa khóa mã hóa RSA mặc định

Mở một trình soạn thảo và copy đoạn code sau vào một file mới:
Visual Basic

Code:


  • <%@ Page Language="VB" %>
  • <%
  • Response.Write(System.Security.Princip al.WindowsIdentity.GetCurrent().Name)
  • %>



    C#

    Code:



    1. <%@ Page Language="C#" %>
    2. <% 3. Response.Write(System.Security.Principal.WindowsId entity.GetCurrent().Name); 4. %>




    1.


    2. Lưu file này vào thư mục chứa ứng dụng của bạn với tên identity.aspx.
    3. Để xác định định danh (identity) cho ứng dụng web của bạn, mở file này trên trình duyệt, nội dung hiển thị trên trình duyệt chính là identity của ứng dụng đó.
    4. Trên cửa sổ command prompt, chạy aspnet_regiis.exe với các tham số sau:
    * Tham số -pa, theo sau là RsaProtectedConfigurationProvider.
    * Định danh của ứng dụng.
    Ví dụ, lệnh sau cấp quyền cho account NETWORK SERVICE truy xuất đến đối tượng chứa key RSA mặc định "NetFrameworkConfigurationKey" .
    aspnet_regiis -pa "NetFrameworkConfigurationKey" "NT AUTHORITY\NETWORK SERVICE"
    Hãy giữ nguyên cửa sổ command prompt này.

    2. Mã hóa các phần của file web.config

    Bây giờ ứng dụng web của bạn đã có quyền truy xuất đến đối tượng chứa key mã hóa của RsaProtectedConfigurationProvider, bạn sẽ mã hóa các phần trong file Web.config bằng các key trong đối tượng này. Sau đó ASP.NET sẽ tự động giải mã khi nó sử dụng đến các phần này.
    Mã hóa phần trong file Web.config

    1. Mở file Web.config trên một trình soạn thảo để chỉnh sửa.
    * Nếu ứng dụng web của bạn không có file Web.config, hãy mở một trình soạn thảo, copy đoạn code sau vào và lưu lại trên thư mục gốc ứng dụng của bạn với tên là web.config.
    2. Hãy đảm bảo trên file của bạn có 2 phần là nằm trong như trong ví dụ dưới đây.

    Code:



    1.
    2.
    3.
    4.

    5.
    6.
    8.

    9.




    Ghi và đóng file này lại.
    Trên cửa sổ dòng lệnh, chuyển sang thư mục của .NET 2.0 bằng lệnh sau:
    cd \WINDOWS\Microsoft.Net\Framework\v2.0.*
    Sau đó chạy aspnet_regiis.exe với các tùy chọn:

    * Tùy chọn -pe và "connectionStrings" để mã hóa phần connectionStrings.
    * Tùy chọn -app và tên ứng dụng của bạn.

    Ví dụ:
    aspnet_regiis -pe "connectionStrings" -app "/MyApplication"
    Lặp lại bước trên cho phần , ví dụ :
    aspnet_regiis -pe "system.web/machineKey" -app "/MyApplication"
    Giữ nguyên cửa sổ prompt này.
    Mở file Web.config, hãy xem các mục được mã hóa, nội dung của chúng có dạng như sau:



    Code:



    1.
    2.
    3.
    5.
    6.
    7.
    8.
    9.
    10. RSA Key
    11.

    12.

    13.
    14. WcFEbDX8VyLfAsVK8g6hZVAG1674ZFc1kWH0B oazgOwdBfinhcAmQmnIn0oHtZ5tO2EXGl+dyh10giEmO9NemH4 YZk+iMIln+ItcEay9CGWMXSen9UQLpcQHQqMJErZiPK4qPZaRW wqckLqriCl9X8x9OE7jKIsO2Ibapwj+1Jo=
    15.

    16.

    17.

    18.

    19.
    20. OpWQgQbq2wBZEGYAeV8WF82yz6q5WNFIj3rcu Q8gT0MP97aO9SHIZWwNggSEi2Ywi4oMaHX9p0NaJXG76aoMR9L/WasAxEwzQz3fexFgFSrGPful/5txSPTAGcqUb1PEBVlB9CA71UXIGVCPTiwF7zYDu8sSHhWa0fN XqVHHdLQYy1DfhXS3cO61vW5e/KYmKOGA4mjqT0VZaXgb9tVeGBDhjPh5ZlrLMNfYSozeJ+m2Lsm 7hnF6VvFm3fFMXa6+h0JTHeCXBdmzg/vQb0u3oejSGzB4ly+V9O0T4Yxkwn9KVDW58PHOeRT2//3iZfJfWV2NZ4e6vj4Byjf81o3JVNgRjmm9hr9blVbbT3Q8/j5zJ+TElCn6zPHvnuB70iG2KPJXqAj2GBzBk6cHq+WNebOQNWI b7dTPumuZK0yW1XDZ5gkfBuqgn8hmosTE7mCvieP9rgATf6qgL gdA6zYyVV6WDjo1qbCV807lczxa3bF5KzKaVUSq5FS1SpdZKAE 6/kkr0Ps++CE=
    21.

    22.

    23.

    24.

    25.
    26.
    27.
    29.
    30.
    31.
    32.
    33.
    34. RSA Key
    35.

    36.

    37.
    38. IwUopItbWX0mJdGWtAqE1LlsG3u5RBRlAXs 9/GZj3HEfeUXduHVF76q6Ip88YqlfLthH+DMBYdOZAF+hCOmS2ag fTo1tKUvELRGIljS/BqEYxUO+/IOz9tllAw8ZlGF7AVCzptgIejI+iLXEZfMKW7f6EMGeb5vaaKX HIkYZwcM=
    39.

    40.

    41.

    42.

    43.
    44. ivVyERVPNUzIb/i7/NUbRkxsxh8IG959vycwrzJO0vYWxHZ5i03SfrLbsGUV17+FxZ6 lbcrVaF5FY3zVm7dRMRvQpVFwaVcL
    45.

    46.

    47.

    48.

    49.

    50.




    Đóng file web.config lại.

    3. Truy cập vào phần cấu hình đã bị mã hóa

    ASP.NET tự động giải mã phần nội dung file Web.config file khi nó xử lý. Do đó, không cần thực hiện thêm các bước khác để giải mã nội dung đã mã hóa để ứng dụng ASP.NET có thể làm việc cũng như truy xuất các giá trị này. Tuy nhiên, bạn có thể làm như sau nếu muốn hiển thị các thông tin này.
    Để hiển thị các thông tin đã được mã hóa

    Mở một trình soạn thảo, copy và paste đoạn code sau vào một file mới:
    Visual Basic

    Code:



    1. <%@ Page Language="VB" %>
    2. <%@ Import Namespace="System.Configuration" %>
    3. <%@ Import Namespace="System.Web.Configuration" %>
    4.
    16.
    17.
    18.

    19.
    20.


    21. MachineKey.DecryptionKey =

    22. MachineKey.ValidationKey =
    23.

    24.
    25.



    C#

    Code:



    1. <%@ Page Language="C#" %>
    2. <%@ Import Namespace="System.Configuration" %>
    3. <%@ Import Namespace="System.Web.Configuration" %>
    4.
    16.
    17.
    18.


    19.
    20.


    21. MachineKey.DecryptionKey =

    22. MachineKey.ValidationKey =
    23.

    24.
    25.




    1. Lưu file này với tên walkthrough.aspx trên thư mục chứa ứng dụng của bạn,mở nó trên trình duyệt.
    Bạn sẽ thấy được các giá trị được giải mã trên file Web.config đã mã hóa.
    2. Xóa file vừa tạo sau khi hoàn thành bài hướng dẫn này nếu bạn đang thực hành trên website của mình.

    4. Các bước khác

    Bạn cũng có thể giải mã các nội dung đã mã hóa, nếu bạn cần, bằng cách chạy file aspnet_regiis.exe với tùy chọn -pd. Cú pháp giống như khi bạn mã hóa file Web.config với tùy chọn -pe, ngoại trừ việc bạn không phải xác định Protected Configuration Provider. Provider tương ứng được chỉ ra sử dụng thông tin trong thẻ configProtectionProvider của các phần được mã hóa. Ví dụ, 2 lệnh sau giải mã 2 phần nằm trong của file Web.config trên ứng dụng có tên MyApplication:
    aspnet_regiis -pd "connectionStrings" -app "/MyApplication"
  • No comments:

    Router Packet Networking

    Đây là video ngắn khá hay, mô tả đường đi của một gói tin trên Mạng Internet.