2010-02-25 11 views
16

Tôi đã có một trang trong một ứng dụng ASP.Net (Mvc của nó thực sự nhưng không quan trọng) và tôi muốn chỉ cho phép các kết nối đến trang này từ máy địa phương. Tôi rất thích làm điều gì đó như thế này trong Web.config:Có thể cấu hình một vị trí trong Web.config để chỉ cho phép các kết nối cục bộ

<location path="resources"><system.web><authorization><allow ips="local"/></authorization></system.web></location> 

Tôi biết điều này là có thể với một kiểm tra đơn giản trong mã trang đằng sau (hoặc điều khiển) và its even possible just with IIS configuration nhưng tôi sẽ yêu một cấu hình Web.config như đây sẽ là giải pháp thanh lịch nhất theo ý kiến ​​của tôi. Bất cứ ai biết nếu điều này là có thể?

Cảm ơn

Guido

+0

Người dùng của bạn có phải là tên miền Windows không? Nếu vậy, bạn có thể giới hạn quyền truy cập chỉ cho Người dùng miền. Nó trông rất giống với câu trả lời của @ lance. – jrummell

+0

Lưu ý: Điều này là không thể, tất cả các giải pháp đều yêu cầu viết mã (không có sẵn giải pháp hộp) – gatapia

Trả lời

4

Đây không phải là những gì bạn yêu cầu, nhưng bạn có thể chỉ định người dùng của   máy tính cục bộ. Tôi không thể tưởng tượng điều này là thiết thực trừ khi đó là một số lượng nhỏ người dùng bạn muốn cho phép.

<location path="resources"> 
    <system.web> 
    <authorization> 
     <allow users="LOCALMACHINENAME\UsernameOfTrustedUser"/> 
     <deny users="*"/> 
    </authorization> 
    </system.web> 
</location> 
+0

Xin chào Lance, Điều này sẽ không giúp ích cho người dùng IIS sẽ chạy trang này định kỳ và hiện tại tôi không 'Mạo danh' tất cả người dùng sẽ là người dùng IIS. – gatapia

+0

Bạn đã thử đề xuất này chưa? Nó sẽ hoạt động. Việc sử dụng "Mạo danh" không liên quan đến ví dụ xác thực tại đây. –

0

Bạn có thể tạo phần cấu hình của riêng bạn sẽ là một phần của web.config và sau đó sử dụng cài đặt để kiểm soát hành vi trong global.asax Session_Start.

2
  1. Phát minh bí danh không phải DNS cho máy, tức là "PrivateHostName".
  2. Đặt giá trị này trong tệp máy chủ cục bộ để trỏ đến 127.0.0.1.
  3. Đặt tiêu đề máy chủ (IIS) cho trang web sao cho nó chỉ phản hồi các yêu cầu để giải quyết "PrivateHostName".
  4. Đối với tất cả các cuộc gọi nội hạt, hãy sử dụng tên máy chủ riêng.

Khách hàng từ xa sẽ không thể giải quyết tên máy chủ lưu trữ.

Bạn có thể bảo mật hơn bằng cách sử dụng địa chỉ IP chuyên dụng được kết nối với bộ điều hợp mạng ảo mà thực sự không phản hồi các yêu cầu bên ngoài.

+5

Giải pháp không an toàn. Hacker có thể thêm bí danh này vào tệp lưu trữ cục bộ của mình và truy cập vào trang web. – meir

25

Bạn có thể yêu cầu IIS để hạn chế quyền truy cập vào một nguồn tài nguyên theo địa chỉ IP từ bên trong Web.config:

<location path="resources"> 
    <system.webServer> 
    <security> 
     <ipSecurity allowUnlisted="false"> 
     <clear/> 
     <add ipAddress="127.0.0.1"/> 
     </ipSecurity> 
    </security> 
    </system.webServer> 
</location> 

More info

EDIT: Như Mike chỉ nó ra trong các bình luận dưới đây, điều này đòi hỏi mô-đun Hạn chế miền và IP được cài đặt. Cảm ơn Mike!

+7

Cảm ơn câu trả lời. Để bắt đầu, điều này không có tác dụng với tôi - thiết lập dường như bị bỏ qua bởi IIS. Cuối cùng tôi đã làm việc trên Windows 7, mô-đun IP và Domain Restrictions không được cài đặt theo mặc định. Để làm việc đó tôi phải làm với 'Bảng điều khiển> Chương trình và Tính năng> Bật hoặc tắt các tính năng của Windows> Dịch vụ Thông tin Internet> Dịch vụ Web Toàn cầu> Bảo mật' và chọn 'Bảo mật IP'. –

+0

Điều này dường như hoạt động tốt, nhưng bạn có biết cách thay đổi đầu ra của trang không? Tôi nhận được mã trạng thái 200 và trang đọc: "Truy cập từ xa không được phép (2)". – Redtopia

+0

@Redtopia: bạn có thể thêm trang lỗi 403. Trong Web.config bạn sẽ cần: Daniel

1

Tôi thấy điều này cũng hữu ích, nếu bạn muốn chỉ định một dải địa chỉ IP. Bạn có thể thêm khối mã sau vào web.config

<system.webServer> 
    <security> 
     <ipSecurity allowUnlisted="false"> 
      <clear/> 
      <add ipAddress="95.110.115.0" subnetMask="255.255.255.0"/> 
      <!--blocks range 95.110.115.0 to 95.110.115.255-->  
      <add ipAddress="95.110.0.0" subnetMask="255.255.0.0"/>  
      <!--blocks range 95.110.0.0 to 95.110.255.255-->  
      <add ipAddress="95.0.0.0" subnetMask="255.0.0.0"/>   
      <!--blocks range 95.0.0.0 to 95.255.255.255--> 
     </ipSecurity> 
    </security> 
</system.webServer> 
Các vấn đề liên quan