2021年7月9日 星期五

[研究]Fortify SCA 對「WebForm」「個別使用者帳戶」官方範例掃描結果

[研究]Fortify SCA 對「ASP.NET Web 應用程式 (.NET Framework)」的「WebForm」「個別使用者帳戶」微軟官方專案範本官方範例掃描結果

2021-07-09

2021-08-15更新

Click圖片可看100%原尺寸










********************************************************************************
Cross-Site Scripting: DOM


檔案為 \Scripts\WebForms\SmartNav.js

   item.data = eval(menu.id + "_Data");   


根據這篇
[研究] Microsoft.AspNet.ScriptManager.MSAjax 與 Microsoft.AspNet.ScriptManager.WebForms 安裝
Microsoft.AspNet.ScriptManager.WebForms 套件會安裝
\Scripts\WebForms\Menu.js
\Scripts\WebForms\SmartNav.js


********************************************************************************
Insecure Transport: Database


這是 Web.Config 中資料庫連線字串設定
<add name="DefaultConnection" 
    connectionString="Data Source=(LocalDb)\MSSQLLocalDB;
    AttachDbFilename=|DataDirectory|\aspnet-WebApplication1-20210709074550.mdf;
    Initial Catalog=aspnet-WebApplication1-20210709074550;Integrated Security=True"
      providerName="System.Data.SqlClient" />

詳見這篇
[研究][ASP.NET] Fortify SCA 報告 Web.Config 資料庫連線字串設定有 Insecure Transport: Database 問題

保護連接字串與其他設定資訊 (C#)
使用「 ASP.NET IIS 註冊工具 (aspnet_regiis.exe) 」 對 Web.Config 中 <connectionStrings> 中資訊加密。

********************************************************************************
Open Redirect


這是 /Account/AddPhooneNumber.aspx.cs 的內容

  Response.Redirect("/Account/VerifyPhoneNumber?PhoneNumber=" + HttpUtility.UrlEncode(PhoneNumber.Text));



********************************************************************************
Open Redirect


參考這篇,可改用 Server.Transfer 代替 response.Redirect


********************************************************************************
Open Redirect


這是 \Account\Login.aspx 的內容

 Response.Redirect(String.Format("/Account/TwoFactorAuthenticationSignIn?ReturnUrl={0}&RememberMe={1}", 
                                 Request.QueryString["ReturnUrl"],
                                 RememberMe.Checked),
                   true);



********************************************************************************
Cross-Site Scripting: DOM


根據這篇
[研究] Microsoft.AspNet.ScriptManager.MSAjax 與 Microsoft.AspNet.ScriptManager.WebForms 安裝
Microsoft.AspNet.ScriptManager.WebForms 套件會安裝
\Scripts\WebForms\Menu.js
\Scripts\WebForms\SmartNav.js

檔案為 /Scripts/WebForms/MSAjax/SmartNav.js

http://ajax.aspnetcdn.com/ajax/4.5.1/1/SmartNav.js


document.location.href=fdurl;  


********************************************************************************
Fortify SCA ( Fortify Static Code Analyzer ) 是 白箱測試工具 ( 源碼檢測、原始碼安全檢測、原始碼檢測),白箱測試無法保證 100% 正確,有可能誤判。

修改3rd Party套件要考慮一個問題,套件更新後又會被覆蓋回去。Menu.js 和 MSmartNav.js 都是Microsoft.AspNet.ScriptManager.WebForms 套件的,真有安全問題,微軟 Microsoft 應該早已經處理。
********************************************************************************
2021-08-15
為了避免 Fortify SCA 報 Menu.js 和 SmartNav.js,把 Microsoft.AspNet.ScriptManager.WebForms  套件移除會怎樣 ?

執行會出錯
'/' 應用程式中發生伺服器錯誤。
'WebFormsBundle' 不是有效的指令碼名稱。名稱必須以 '.js' 結尾。

把 Site.Master 中這行註解掉
<asp:ScriptReference Name="WebFormsBundle" />
改為
<%--<asp:ScriptReference Name="WebFormsBundle" />--%>

執行似乎也正常。

(完)

沒有留言:

張貼留言