解決網址參數出現雙引號,引發Cross-Site Scripting弱點之問題

今年度在處理年度弱點掃描的時候,發現了伺服器報告出現Cross-Site Scripting(XSS)風險,仔細一看竟然是由Url GET參數被帶入雙引號所引爆(這年頭連雙引號都不能帶入了啊!),經過網路爬文找到解決方法將其記錄在此。

這個問題的題目應該改成,要如何在ASP.NET的web.config,阻擋認知中不適當Query String的字元。

在web.config中阻擋特定的Query String字元

Step 1. 微軟denyQueryStringSequences文件有寫明在IIS 7.5之後才支援,在此之前的版本請自行尋找別的求生之路吧,例如:UrlScan。

Step 2. 你的伺服器必須安裝特定的角色功能:「要求篩選」,否則不會有這項feature出現。

Step 3. 接著就可以去IIS的介面下,利用GUI新增要阻擋不合法的QueryString字元,我自己是比較偏好從web.config這邊來處理,因此把XML條列如下:

<configuration>
  <system.webServer>
    <security>
      <requestFiltering>
        <denyQueryStringSequences>
          <add sequence="&quot;" />
        </denyQueryStringSequences>
      </requestFiltering>
    </security>
  </system.webServer>
</configuration>

更新丟上伺服器,就可以看到當QueryString出現自己認知內不合法的字串時,伺服器會拋出HTTP 404 Not Found。

Acunetix ThreatLevelHigh CrossSiteScripting XSS CSS QueryString DoubleQuotes