IIS7: Làm cách nào để chặn truy cập bằng tệp web.config?


13

Tôi biết rằng IIS7 cho phép tôi có cấu hình cho mỗi thư mục với tệp xml web.config. Tôi có một thư mục với một số tệp cấu hình không muốn truy cập web. Một tệp web.config cục bộ cấm truy cập đọc vào nó sẽ là một giải pháp tốt.

Nội dung của tệp web.config phải cấm truy cập web vào các tệp là gì?

Chỉnh sửa: Tôi đang cố gắng đặt tệp web.config với các nội dung này vào một tệp:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
            <system.web>
                    <authorization>
                            <deny users="*" /> <!-- Denies all users -->
                    </authorization>
            </system.web>
</configuration>

Nhưng tôi vẫn có thể truy cập trực tiếp một tập tin trong thư mục. Có gì sai với nó? Làm thế nào để tôi gỡ lỗi những gì đang xảy ra?

Câu trả lời:


11

Bạn đang sử dụng system.web. Trong IIS7, bạn nên sử dụng system.webServer thay thế. Điều này sẽ chặn tất cả các loại tệp, không chỉ các tệp ASP.NET. Ví dụ: bạn có thể mật khẩu bảo vệ jpg, gif, txt và tất cả các loại tệp.

Nó sẽ trông giống như thế này:

  <system.webServer>
      <security>
          <authorization>
              <remove users="*" roles="" verbs="" />
              <add accessType="Allow" roles="Administrators" />
          </authorization>
      </security>
  </system.webServer>

Và nếu bạn muốn đặt nó chỉ cho 1 tệp:

 <location path="dontlook.jpg">
     <system.webServer>
         <security>
             <authorization>
                 <remove users="*" roles="" verbs="" />
                 <add accessType="Allow" roles="Administrators" />
             </authorization>
         </security>
     </system.webServer>
 </location>

Tôi đã chạy qua câu trả lời của chính mình hơn một năm sau đó và muốn thêm một ghi chú. Bạn phải đảm bảo rằng cả biểu mẫu hoặc cửa sổ auth cũng được bật, nếu không, chỉ có quy tắc xóa sẽ hữu ích. Nếu bạn đã bật Xác thực Windows thì bạn sẽ được nhắc nhập thông tin đăng nhập của mình.
Scott Forsyth - MVP

+1 Cuối cùng! Đã dành 3 giờ để tìm thấy điều này! Cảm ơn bạn
hofnarwillie

5

Tôi nghĩ rằng điều này có thể giải quyết vấn đề của bạn.
đặt web.config này trong thư mục chứa thư mục đích:

<configuration>
 <system.webServer>
  <security>
   <requestFiltering>
    <hiddenSegments>
     <add segment="target directory name"/>
    </hiddenSegments>
   </requestFiltering>
  </security>
 </system.webServer>
</configuration>

2
Bạn có thể xác minh điều này trước khi gửi đây là một câu trả lời.
James A Mohler

Điều này làm việc cho tôi. Ngoài ra, lưu ý rằng bạn có thể đặt tên tệp dưới dạng phân đoạn.
Soenhay

4

Bạn có thể sử dụng các nút Vị trí trên Web.config. Dưới đây là một lời giải thích chi tiết về msd ; một cách ngắn gọn:

<location path="Subdirectory">
    <system.web>
        <authorization>
            <deny users="*"/> <!-- Denies all users -->
        </authorization>
    </system.web>
</location>
<location path="Public_Directory">
    <system.web>
        <authorization>
            <allow users="*"/> <!-- Allows all users -->
        </authorization>
    </system.web>
</location>

Bạn cũng có thể sử dụng? ký tự đại diện để chỉ định rằng bạn nên (cho phép / từ chối) người dùng ẩn danh


Làm thế nào tập tin này sẽ chặn quyền truy cập vào thư mục hiện tại, nhưng cho phép thư mục "css"? nó thiếu thẻ <configure> xung quanh nó.
Neves

Cho phép của bạn chỉ cho phép người dùng xác thực. Nếu bạn muốn người dùng không được xác thực, bạn nên bao gồm cho phép người dùng = "?" cũng.
Quạt Nissan

0
  • * có nghĩa là mọi người dùng đã đăng nhập.
  • ? nghĩa là người dùng ẩn danh.

Bạn phải sử dụng ?.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <authorization>
            <deny users="?" /> 
        </authorization>
    </system.web>
</configuration>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.