ShowProgramCode

2022年1月6日 星期四

ASP.NET C# Fotify Cross-Site Scripting: Poor Validation(XSS)問題解決

 這次客戶使用Fortify進行掃描,多數的問題都已經解決,或者將公用函式做成.dll檔後,也都通過掃描標準。唯獨標題的問題,從開始到前日一直沒有解決,今天終於處理完畢,所以特別記錄下來。

依照我之前查詢的諸多參考網頁,多數說明解決這個問題的方法就是使用HtmlEncode()處理input,不讓程式執行含有HTML標籤的內容,也避免資料庫存入。

因此我將被掃描出來的地方,只要有被呼叫到的部分,不管input、output全部都使用HtmlEncode()處理,然而這沒有用,Fortify依舊堅持把這段程式掃出來了。

目前解決方法:
input:依舊使用HttpUtility.HtmlEncode()處理。
output:
HtmlSanitizer sanitizer = new HtmlSanitizer();
output = sanitizer.Sanitize(HttpUtility.HtmlDecode(data));

程式碼無法放上來,只能這樣說明,希望下次要是再遇到這樣的問題能夠提供參考。

後續發生一個意想不到的問題,這個第三方套件和Framework4.6.2的版本居然有參考檔會衝突。

原因是客戶不希望保留Nuget參考,希望所有第三方套件全部轉成.dll來參考,加上客戶的Framework版本是4.5升上來的,所以本機執行一直沒有發現錯誤,等到程式發佈到IIS上後居然無法執行。今天找了一整天終於知道有兩個套件參考的dll與4.6.2衝突了,需要改寫web.config設定。

將web.config修改部分放上來,真是始料未及的問題。

  <runtime>

          <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

<dependentAssembly>

<assemblyIdentity name="AngleSharp.Css" publicKeyToken="XXXXX" culture="neutral"/>

<bindingRedirect oldVersion="0.0.0.0-0.16.3.0" newVersion="0.16.3.0"/>

</dependentAssembly>

                  <dependentAssembly>

                          <assemblyIdentity name="AngleSharp" publicKeyToken="XXXXX" culture="neutral"/>

                          <bindingRedirect oldVersion="0.0.0.0-0.16.1.0" newVersion="0.16.1.0"/>

                  </dependentAssembly>

          </assemblyBinding>

  </runtime>


沒有留言:

張貼留言