2008-11-17 37 views
23

Thực tiễn tốt nhất về bảo mật ASP.NET là gì?Thực tiễn tốt nhất về bảo mật ASP.NET

Cho đến nay đã xác định được liệt kê ở đây:

  • Luôn luôn tạo ra các khóa mã hóa mới và mật khẩu quản trị viên bất cứ khi nào bạn đang di chuyển một ứng dụng vào sản xuất.

  • Không bao giờ lưu trữ mật khẩu trực tiếp hoặc dưới dạng được mã hóa. Luôn luôn được lưu trữ một cách băm mật khẩu.

  • Luôn lưu các chuỗi kết nối trong thẻ Web.config và mã hóa nó trong phần cấu hình bằng cách sử dụng nhà cung cấp cấu hình được bảo vệ (RSA hoặc DPAPI). Xem example here

  • Sử dụng ID người dùng có đặc quyền ít nhất để kết nối với máy chủ SQL hoặc cơ sở dữ liệu bạn đang sử dụng. Ví dụ: nếu bạn chỉ thực hiện các thủ tục được lưu trữ từ một mô-đun ứng dụng nhất định thì bạn phải tạo một ID người dùng có quyền chỉ thực thi.

  • Sử dụng PrincipalPermission nếu bạn muốn sử dụng bảo mật dựa trên vai trò trên các trang.

    [PrincipalPermission(SecurityAction.Demand, Role="Admin")] 
    public class AdminOnlyPage : BasePageClass 
    { 
        // ... 
    }
  • Luôn sử dụng tham số để ngăn SQL Injection trong truy vấn SQL.

    1. Xem xét cài đặt URLScan trên máy chủ IIS của bạn để bảo vệ chống lại SQL Injection. Ngoài ra, để bảo vệ chống lại các cuộc tấn công XSS. Bạn có thể sử dụng thư viện AntiXSS của MSFT thay vì được xây dựng để mã hóa đầu ra thay vì được xây dựng trong HtmlEncode tìm thấy trong HttpServerUtility.
  • Luôn giữ trên customErrors trong cấu hình web để làm cho bạn lỗi/trường hợp ngoại lệ riêng

    < customErrors mode = "On" defaultRedirect = "MyErrorPage.htm"/>

  • Trong các ứng dụng web, luôn xác thực đầu vào của người dùng cho các thẻ html hoặc bất kỳ tập lệnh nào.

  • Không bao giờ lưu trữ thông tin nhạy cảm, như mật khẩu trong cookie.

  • Không hiển thị thông báo lỗi hệ thống, ngăn xếp dấu vết vv, trong trường hợp ngoại lệ.
+1

Đây phải là một wiki. – NotMe

+0

có một cái nhìn tại http://gosecure.github.io/security-cheat-sheet/ – SPoint

Trả lời

11

Tôi đã tìm thấy Developer Highway Code của Microsoft là danh sách kiểm tra bảo mật hữu ích.

+1

Vâng, đây là một tài nguyên miễn phí tốt-in ra các danh sách kiểm tra và dính trên tường. –

+0

Tôi không thể tìm thấy bất kỳ danh sách kiểm tra bảo mật nào trên liên kết đó. – abhi

+0

@robert https://blogs.msdn.microsoft.com/wriju/2008/03/26/the-developer-highway-code-free-e-book/ Địa chỉ này có vị trí cập nhật của pdf. Tuy nhiên, nó có vẻ là một chút ngày nay. – RominNoodleSamurai

0

Trong khi hiển thị nội dung từ cơ sở dữ liệu trên trang web, bạn có thể sử dụng HttpServerUtility.HtmlEncode để mã hóa đầu ra để tránh Cross Site Scripting (XSS) cuộc tấn công.

0

Xem xét cài đặt URLScan trên máy chủ IIS của bạn để bảo vệ chống lại SQL Injection.
Ngoài ra, để bảo vệ chống lại các cuộc tấn công XSS, tôi sẽ sử dụng thư viện AntiXSS của MSFT thay vì được xây dựng để mã hóa đầu ra thay vì được xây dựng trong HtmlEncode tìm thấy trong HttpServerUtility.

4
  1. Không bao giờ lưu trữ thông tin nhạy cảm như mật khẩu trong cookie.
  2. Không hiển thị thông báo lỗi hệ thống, ngăn xếp dấu vết, v.v. trong trường hợp ngoại lệ.
Các vấn đề liên quan