2015-10-15 105 views
0

我有傳統的ASP網站具有以下設置工作:如何防止用戶直接在網站根目錄訪問文件

  • 匿名身份驗證啓用
  • 運行在端口80
  • 無IP地址和域名限制
  • 無請求過濾
  • 啓用父路徑=真
  • 根文件夾不被所有人共享

我正在處理兩個安全問題。

1)用戶當前可以通過輸入「http://MyWebsite.com/test.txt」來訪問文件(txt,pdf)。如何防止用戶以這種方式訪問​​非asp文件?

2)有幾個文件夾(例如上傳)應用程序需要有完全訪問權限。但是用戶不應該能夠鍵入物理路徑來訪問這些文件夾下的這些文件。我如何設置?

以某種方式,我想創建一個IIS URL規則重寫,它只顯示其中包含.asp頁面的文件。所以我可以有http://LocalHost/DisplayPDF.asp?ThePDF並能夠查看PDF,但我想阻止用戶去和輸入http://LocalHost/ThePdf.pdf

我的猜測是我需要正確配置IIS。任何建議表示讚賞。

回答

1

我想通過爲根目錄文件創建一個url重寫規則(以擺脫與繼承相關的問題)併除去子目錄的靜態文件處理程序來使其工作。

請將下列應用程序的根目錄web.config或修改相應的現有的,不要忘了,如果還有其他的規則移動到合適的位置。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
     <system.webServer> 
      <rewrite> 
       <rules> 
        <rule name="ROOT_FILE_CHECK"> 
         <match url="^[^/]*$" /> 
         <conditions> 
          <add input="{DOCUMENT_ROOT}\{R:0}" matchType="IsFile" /> 

          <!-- allowed extensions --> 
          <add input="{REQUEST_FILENAME}" pattern="\.asp$" negate="true" /> 
          <add input="{REQUEST_FILENAME}" pattern="\.allowed1$" negate="true" /> 
          <add input="{REQUEST_FILENAME}" pattern="\.allowed2$" negate="true" /> 
          <!-- allowed extensions --> 
         </conditions> 
         <action type="CustomResponse" statusCode="404" statusReason="Not Found" statusDescription="." /> 
        </rule> 
       </rules> 
      </rewrite> 
     </system.webServer> 
</configuration> 

,並放置在要阻止對文件的訪問每個子目錄下面web.config。這一個刪除靜態文件處理程序,使該目錄中的靜態文件變得不可訪問。

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <handlers> 
      <remove name="StaticFile" /> 
     </handlers> 
    </system.webServer> 
</configuration> 
+0

感謝@庫爾 - TIGIN。但是,我得到錯誤代碼0x8007000d 500.19錯誤。請注意,這是經典的asp。經典的ASP識別web.config文件? – amindomeniko

+0

@amindomeniko web.config是關於IIS7 +的,所以它不重要的asp或asp.net甚至php。 '500.19'表示你的web.config文件無效。如果沒有最後一個'web.config'就很難說清楚,用你當前的'web.config'來更新這個問題。 –

+0

之前沒有web.config。儘管如此,當我在IIS中使用規則重寫UI創建規則時,問題就解決了。任何想法爲什麼這個webconfig返回一個錯誤? – amindomeniko

0

對於阻止用戶訪問非asp文件,您需要將這些文件從根移動到可訪問的Web文件夾之外的文件夾。

然後,您可以將具有不同安全策略的虛擬目錄映射到該新文件夾。或者,如果您想間接訪問這些文件,您需要一個頁面,然後允許他們在需要時下載或顯示內容。

對於上傳文件夾,您應該能夠映射不屬於網站一部分的代碼並將代碼上傳到他們的代碼中。

0

您可以從IIS中刪除MIME類型,這將禁止IIS提供您不需要的任何文件類型。

https://technet.microsoft.com/en-us/library/cc770504(v=ws.10).aspx

+0

如果用戶登錄,我需要顯示pdf,所以從MIME類型中刪除將不起作用。 – amindomeniko

+1

在這種情況下,您需要將所有文件移到webroot之外,並編寫一個處理程序來獲取文件並在適當時將其發送給客戶端。 –