iT邦幫忙

0

C# - Fortify Missing Check against Null 如何排除

  • 分享至 

  • xImage

各位大大好 程式如下

protected void Button1_Click(object sender, EventArgs e)
        {

            if (!string.IsNullOrEmpty(userName.Text) || !string.IsNullOrEmpty(userPassword.Text))
            {
                string user1 = userName.Text;
                string user2 = userName.Text;
                DataTable dt = ut.login(user1,user2);

                Session["workid"] = (dt.Rows[0]["workid"].ToString() != null) ? dt.Rows[0]["workid"].ToString().filter() : "N/A";

                auth2 = Session["workid"].ToString() ?? "N/A";

Fortify 在 auth2 行會出現 Missing Check against Null 風險

風險說明:Login.aspx.cs 中的 Button1_Click() 方法可以解除參照 Null 指標,因為它不會檢查 get_Item() 的回傳值,但回傳值可能為 null。

請問該如何修復這個風險 謝謝

auth2 = Session["workid"]?.ToString() ?? "N/A"; 正解 感謝各位

不知道為什麼不能回覆 在這裡感謝大家 不用寫報告了XD

powerc iT邦研究生 5 級 ‧ 2022-11-01 17:05:33 檢舉
auth2 = Session["workid"]?.ToString() ?? "N/A";
不確定能不能這樣做,猜想是Session["workid"]可能為null,如果null再做ToString()那就會出錯,後面的 "??" 語法糖沒有保護到這個判斷。
deh iT邦研究生 1 級 ‧ 2022-11-01 20:07:56 檢舉
樓上正解
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
海綿寶寶
iT邦大神 1 級 ‧ 2022-11-02 09:16:28

試試看

auth2 = (Session["workid"].ToString() != null) ? Session["workid"].ToString() : "N/A";

我要發表回答

立即登入回答