2011-09-16 20 views
5

Trong nỗ lực giúp quản trị viên dễ dàng sửa đổi nhóm người dùng được ủy quyền trong ứng dụng web ASP .NET MVC của tôi, tôi đã đặt tên nhóm trong Web.config làm appSettings.Thực tiễn không tốt là đưa thông tin nhạy cảm vào tệp Web.config?

<add key="User" value="VDP ICMD Users"/> 
<add key="SuperUser" value="VDP ICMD Super Users"/> 
<add key="Administrator" value="VDP ICMD Administrator"/> 

Giá trị liên quan đến tên nhóm Active Directory thực tế. Sau đó, trong bộ điều khiển của tôi, sử dụng tùy chỉnh của tôi AuthorizeAttribute tôi chỉ đơn giản có thể viết

[AuthorizeAD(GroupKeys = "User")] 

Câu hỏi của tôi là, là nó xấu thực hành để đưa thông tin nhạy cảm như tên nhóm trong một file Web.config nơi họ có thể dễ dàng được thay đổi? Có ai dễ dàng truy cập tệp Web.config không bằng cách đăng nhập vào chính máy chủ?

+3

Nếu ai đó có thể truy cập vào máy chủ của bạn và truy cập web.config của bạn, bạn có những vấn đề lớn hơn cần phải lo lắng về ... –

+0

Tên nhóm là chìa khóa để xác thực hợp lệ làm việc với AD với trang web của bạn. Một người nào đó trong tổ chức của bạn đang ở trong nhóm có các hạn chế cao hơn, anh ấy có thể nâng cấp tư nhân bằng cách truy cập web.tập tin cấu hình và chỉ cần thêm/tên nhóm phiên bản để nâng cao viết/chỉnh sửa priveleges ví dụ –

+0

Đồng ý @Justin Satyr. Tôi không lo lắng về điều đó, đó là công việc của quản trị viên sys. Tôi lo lắng hơn nếu ai đó có thể thay đổi hoặc thậm chí xem tập tin cấu hình mà không nhận được quyền truy cập vào máy chủ. – link664

Trả lời

4

Nếu thật dễ dàng hay không tiếp cận với web.config nó phụ thuộc chính sách infraestructure và bảo mật của bạn. Nó không phải là một tập tin có thể duyệt được vì vậy nếu ai đó muốn ăn cắp web.config cần phải nhận được vào máy chủ của bạn. (Một lựa chọn khác sẽ là một lỗ hổng bảo mật hiện tại hoặc tương lai trên luồng ASP.NET, nó đã xảy ra trước đây nhưng chúng tôi hy vọng đây là trường hợp ít có khả năng xảy ra).

Thực tiễn tốt là lưu trữ thông tin ít nhạy cảm nhất có thể nhưng thực sự khó có gì cả.

Mặc dù vậy, bạn có thể mã hóa thông tin hợp lý trên tệp cấu hình của mình. Here bạn có lối đi bộ giải thích cách thực hiện.

2

nói chung phải an toàn miễn là bạn không đặt mật khẩu thuần văn bản có thể bị đánh cắp ngay cả trong nội bộ bởi bất kỳ ai có quyền truy cập vào thư mục triển khai.

Công cụ IIS và ASP.NET trên đầu trang được thiết kế để ngăn truy cập vào tệp web.config từ web để tệp đó sẽ không bị đánh hơi hoặc bị đánh cắp thông qua trình duyệt hoặc kết nối HTTP bao giờ hết.

Nói như vậy, dựa trên kinh nghiệm, tôi sẽ đặt thông tin đó vào bảng cấu hình trong cơ sở dữ liệu và tạo lớp gói trong mã ASP.NET. để tìm nạp những dữ liệu đó xung quanh. Ưu điểm của thông số cấu hình trong cơ sở dữ liệu ở mức tối thiểu dễ dàng hoặc không triển khai, dễ thay đổi mà không cần chỉnh sửa tệp thủ công, sao lưu tự động và trả lời mối quan tâm chính của bạn, cơ sở dữ liệu của bạn phải được bảo vệ khỏi truy cập trái phép.

+0

Vì vậy, câu trả lời của bạn cho ví dụ của tôi là về mặt bảo mật, tốt nhất là đặt thông tin trong Web.config như tôi có, tuy nhiên vì những lý do khác mà bạn đề cập bạn sẽ đặt nó trong cơ sở dữ liệu? – link664

+0

miễn là không ai có thể chạm vào máy chủ web từ bên trong, bởi vì nếu anh ta có thể trở thành quản trị viên trong giây lát. Vì cơ sở dữ liệu nên an toàn hơn, tôi sẽ sử dụng cơ sở dữ liệu. Mặt khác, nếu ai đó có thể chạm vào web.config thì cũng có thể vô hiệu hóa bảo mật trong đó ... –

+0

Chính xác. Như @Justin Satyr nói, nếu họ có quyền truy cập vào máy chủ và web.config của tôi, tôi có vấn đề lớn hơn. Họ không chỉ vô hiệu hóa bảo mật mà còn có thể bổ sung ứng dụng vào một cơ sở dữ liệu khác và thay đổi toàn bộ các thứ khác. – link664

0

No. Điều này không an toàn trong một ngữ cảnh cụ thể.

Tên nhóm là chìa khóa để xác thực hợp lệ làm việc với AD với trang web của bạn. Trong kịch bản của bạn, nếu ai đó trong tổ chức của bạn ở trong nhóm có hạn chế cao hơn, anh ta có thể nâng cấp priveleges bằng cách truy cập tệp web.config và chỉ cần thêm/chỉnh sửa tên nhóm để nâng cao quyền sở hữu riêng của mình, chẳng hạn hoặc truy cập thông tin bí mật , như tiền lương hoặc hợp đồng, hoặc thậm chí là CEO có kế hoạch cho một công ty. Bạn có muốn những rắc rối như vậy?

Đọc bài viết MSDN How to encrypt Web.config

+0

Nhưng theo như tôi biết, cách duy nhất để truy cập tệp Web.config là truy cập vào máy chủ lưu trữ và như @JustinSatyr đã nhận xét, nếu họ có thể làm điều đó, tôi có vấn đề lớn hơn. – link664

Các vấn đề liên quan