2012-08-26 23 views
12

Vì lý do an ninh tôi muốn vô hiệu hóa các phương pháp đó thông qua mức độ ứng dụng vì vậy tôi có file web.config nàyDisable OPTIONS HTTP, TRACE, HEAD, COPY và UNLOCK phương pháp trong IIS

<configuration> 
<location path="index.php"> 
<system.webServer> 
      <directoryBrowse enabled="false" /> 
</system.webServer> 

<system.web> 
    <authorization> 
     <deny verbs="OPTIONS" users="*" /> 
     <deny verbs="TRACE" users="*" /> 
     <deny verbs="HEAD" users="*" /> 
     <deny verbs="PROPFIND" users="*" /> 
     <deny verbs="COPY" users="*" /> 
     <deny verbs="LOCK" users="*" /> 
     <deny verbs="UNLOCK" users="*" /> 
     <deny verbs="PROPPATCH" users="*" /> 
     <deny verbs="MKCOL" users="*" /> 
     <deny verbs="MOVE" users="*" /> 
     <deny verbs="DELETE" users="*" /> 
    </authorization> 
</system.web> 

nhưng điều này không làm việc bất kỳ ý tưởng nào?

Trả lời

4

Điều này làm việc cho tôi nhưng chỉ sau khi buộc các động từ cụ thể được xử lý bởi trình xử lý mặc định.

<system.web> 
... 
    <httpHandlers> 
    ... 
    <add path="*" verb="OPTIONS" type="System.Web.DefaultHttpHandler" validate="true"/> 
    <add path="*" verb="TRACE" type="System.Web.DefaultHttpHandler" validate="true"/> 
    <add path="*" verb="HEAD" type="System.Web.DefaultHttpHandler" validate="true"/> 

Bạn vẫn sử dụng cùng cấu hình như bạn có ở trên, nhưng cũng buộc động từ được xử lý bằng trình xử lý mặc định và được xác thực. Nguồn: http://forums.asp.net/t/1311323.aspx

Cách dễ dàng để kiểm tra chỉ là từ chối GET và xem liệu trang web của bạn có tải hay không.

+1

ngay cả sau khi sử dụng mã của bạn nó không hoạt động cho tôi. Bạn có thể vui lòng đề nghị những gì tôi có thể bị mất tích. evnironment của tôi là asp.net và IIS – Ram

+0

@Ram Nếu không thấy cấu hình của bạn hoặc có bất kỳ kiến ​​thức về môi trường của bạn, tôi không thể đề xuất bất cứ điều gì. Vui lòng đặt câu hỏi trên SO và tham khảo câu hỏi này với chi tiết hơn về thiết lập hiện tại của bạn. – BrutalDev

+1

Tôi nhận được Lỗi HTTP 500,23 - Lỗi Máy chủ Nội bộ ..! @BrutalDev, bạn có bất kỳ ý tưởng nào về tình huống này không .. –

21

Cuối cùng tôi đã tìm thấy câu trả lời khác cho vấn đề này. và điều này đang làm việc cho tôi. Chỉ cần thêm dữ liệu dưới đây vào tệp webconfig của bạn.

<configuration> 
<system.webServer> 
    <security> 
    <requestFiltering> 
    <verbs allowUnlisted="true"> 
    <add verb="OPTIONS" allowed="false" /> 
    </verbs> 
    </requestFiltering> 
    </security> 
</system.webServer> 
</configuration> 

Mẫu biết thêm thông tin, bạn có thể truy cập vào trang web này: http://www.iis.net/learn/manage/configuring-security/use-request-filtering

nếu bạn muốn kiểm tra trang web của bạn, là nó làm việc hay không ... Bạn có thể sử dụng "HttpRequester" mozilla firefox cắm vào. cho plugin này: https://addons.mozilla.org/En-us/firefox/addon/httprequester/

+0

Một cách khác để kiểm tra này là để chạy một máy quét web tốt với trang web của bạn (bạn nên làm điều này anyway). Nếu OPTIONS được bật, nó sẽ được chọn. – nmit026

+0

Thú vị. Với IIS 7.5 tôi bắt đầu nhận được 500,19 lỗi khi tôi thêm vào các dòng bạn đề cập đến. Có vẻ như nó đang xung đột với các cài đặt applicationHost.config của tôi. –

0

Đối với bất kỳ ai đang tìm kiếm tùy chọn giao diện người dùng bằng Trình quản lý IIS.

  1. mở trang web trong IIS Manager
  2. Go To Yêu cầu lọc và mở Yêu cầu lọc Window.
  3. Chuyển đến Động từ Tab và thêm các động từ HTTP vào "Cho phép động từ ..." hoặc "Từ chối từ chối ...". Điều này cho phép thêm các động từ HTTP trong bộ sưu tập "Deny Verb ..".

Yêu cầu lọc Window trong IIS Manager Request Filtering Window in IIS Manager

add verb ... hoặc Deny Động từ ... enter image description here

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