2012-05-04 21 views
5

Khá một vài năm trước, tôi nhớ rằng tôi đã vật lộn với nhiều trang web trong một tình huống miền, nơi một trong các trang web được đặt trong thư mục gốc.Tại sao tôi KHÔNG nên triển khai trang web asp.net hoặc webapp của mình vào thư mục gốc của miền trong IIS?

Vào thời điểm tôi đọc một bài đăng có thẩm quyền giải thích rõ ràng cho tôi lý do tại sao đây là một ý tưởng tồi, những gì tôi nhớ là vấn đề web.config tầng là lý do chính (buộc bạn hủy khai báo tham chiếu xung đột trong các dự án con về cơ bản là người ngoài hành tinh cho dự án đó). Do đó, tôi luôn triển khai bất kỳ trang web nào trong đường dẫn ảo của riêng mình, bằng cách sử dụng một chuyển hướng duy nhất trong thư mục gốc để trỏ tới trang web mặc định.

Tôi dường như không thể tìm thấy tham chiếu có thẩm quyền nữa và cân nhắc triển khai có thể đã thay đổi kể từ đó.

Những ưu điểm và nhiều khả năng là nhược điểm của trường hợp này? Tôi hỏi vì một công ty tôi làm việc với cau mày về việc tách các triển khai theo cách này và tôi không nghĩ đó là một ý hay.

Trả lời

2

Câu trả lời ngắn: cách ly. IMO những lợi ích để lưu trữ các trang web khác nhau/ứng dụng web mà không cô lập chúng là vô nghĩa.

Long trả lời:

Ưu điểm:

  • Sử dụng một cổng duy nhất mà không ràng buộc cụ thể (tức là bí danh.): Nếu bạn không có quyền truy cập vào trang web bindings, hữu ích của nó
  • Tạo trang web động và triển khai nhanh: bạn có thể tạo một trang con mới mà không khai báo nó ở bên IIS
  • Cài đặt chia sẻ: ap thiết lập cơ sở trang web ply cho tất cả subsites (tài liệu, kiểu MIME vv ...)

Nhược điểm:

  • Application hồ ly: không cô lập bản sắc, không có quá trình lao động cô lập, không có sự thất bại/phục hồi cách ly, vv ... (hết thời gian, giới hạn bộ nhớ, v.v ...)

  • AppDomain hoặc lifetime cách ly: bạn sẽ phải quản lý trang web AppDomains của mình.Nếu bạn chia sẻ AppDomain tương tự, bạn sẽ chia sẻ những vòng đời tương tự: nếu AppDomain được bốc dỡ, tất cả các trang web dưới AppDomain này sẽ đi xuống và nạp lại

  • (tức là nếu bạn chạm vào một web.config AppDomain.)

    Cách ly kiến ​​trúc: một số phát triển ứng dụng web cần điều chỉnh bên IIS, nếu bạn điều chỉnh nhóm hoặc trang web IIS chỉ cho một ứng dụng, tác động của nó đối với tất cả các trang web. Tôi nghĩ về thiết lập 32 bit và 64 bit hoặc ánh xạ ký tự đại diện chẳng hạn.

  • Mã và cách ly bảo mật: ứng dụng chạy trong cùng một quy trình công nhân và/hoặc AppDomain ít được bảo vệ khỏi truy cập/tấn công chéo/ứng dụng chéo. Bạn sẽ phải cảnh giác hơn để đảm bảo rằng thông tin từ một ứng dụng không thể được đọc bởi người khác.

  • Kiểm tra: có thể khó kiểm toán hoạt động và thất bại của trang web hơn.

Cách ly ứng dụng web luôn là mục tiêu về môi trường lẫn nhau để bảo vệ ứng dụng với nhau.

Kể từ IIS 7, hồ bơi ứng dụng cách ly đi xa hơn với "hồ bơi sắc ứng dụng": http://www.adopenstatic.com/cs/blogs/ken/archive/2008/01/29/15759.aspx

tôi tìm thấy bài viết này quá: http://searchsecurity.techtarget.com/tip/Web-application-isolation.

Bạn cũng nên xem cấu trúc bộ sưu tập trang web SharePoint. Đây là ý tưởng: http://blogs.msdn.com/b/sgoodyear/archive/2011/11/18/9848865.aspx.

+0

Cảm ơn bạn đã viết rộng rãi. Trong liên kết của S. Goodyear, ông kết luận với câu _ "Hãy nhớ rằng, cấu trúc ảo và phân loại trang web (thư mục) có thể là bất cứ điều gì, bởi vì chúng chỉ là siêu liên kết trỏ đến nội dung. Tránh đưa ra quyết định cấu trúc vật lý khi liên kết sẽ làm!" _, mà tôi nghĩ là một điểm tuyệt vời trong trường hợp. – Abel

1

Phản đối chính để lưu trữ nhiều "trang web" dưới một tên miền (và chẳng hạn như một "trang web" trong IIS) tôi có thể nghĩ là sẽ tách biệt danh tính người dùng; khách truy cập đã đăng nhập vào/site1 cũng sẽ được đăng nhập vào/site2 khi bạn định cấu hình ví dụ: Xác thực Windows và đây là điều bạn có thể không muốn.

Điều tương tự cũng có thể áp dụng cho cookie được đặt ở cấp tên miền. Trong IIS một trang web là một ranh giới bảo mật (cho khách hàng là tốt) và có nhiều "trang web" trong cùng một miền COULD mở bạn đến lỗ hổng bảo mật ...

Đối với việc đặt một "trang web" trong thư mục gốc và những người khác trong thư mục con; các ứng dụng của bạn được đặt cho "trang web gốc" sẽ xếp vào các "thư mục con"; một lần nữa điều này có thể không phải là vấn đề nhưng nó là một lỗ hổng bảo mật tiềm ẩn.

+0

Cảm ơn bạn đã chỉ ra các vấn đề bảo mật. Tôi không nghĩ đến con đường miền hoặc tên miền (chưa rõ ràng). Là xác thực được phân lập trên mỗi đường dẫn và xếp tầng tới các thư mục con, hay nó chỉ bị cô lập trên mỗi miền? Chúng tôi sử dụng trình xử lý xác thực tùy chỉnh, vì vậy trong trường hợp hiện tại, điều đó có thể không quan trọng. – Abel

+1

Xác thực (cơ bản + cửa sổ) thường là toàn trang nhưng ủy quyền có thể được định cấu hình theo cách xếp tầng. Xác thực biểu mẫu được định hướng theo cookie cho thấy có thể thực hiện để các thư mục con khác nhau cho phép người dùng đăng nhập khác nhau cùng một lúc. Trình xử lý tùy chỉnh của bạn lưu trữ danh tính khách truy cập ở đâu? Nếu đây là cookie hướng bạn nên đảm bảo thiết lập cookie của bạn là hợp lệ cho một trang con duy nhất ... –

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