前言
ASP.NET Core Razor Page 建立 Login 頁面時,PageModel 上大多會有 Password 的屬性,如下,
1 | [ ] |
程式透過 Checkmarx 掃過後,就會說它有 Heap Inspection 的問題,直指向 string Password ,如下,
解法
傳統的做法,我們需要將 string Password 改成 SecureString Password 。
可是頁面傳上來的值卻是 string ,要如何處理呢?
這時就需要透過 Model Binder 來幫忙將 string 轉成 SecureString 。
所以我們先建立 SecureString 的 Extend Methods 來幫忙轉換,如下,
1 | //using System.Security; |
建立 SecureStringModelBinder 來將 string 轉成 SecureString ,如下,
1 | public class SecureStringModelBinder : IModelBinder |
再來只需要在 SecureString Password 屬性上設定 BinderType 為 typeof(SecureStringModelBinder) 就可以了,如下,
1 | [ ] |
而在 Service 的 Method 中,如果需要將它轉回 string 比較的話,就再呼叫 ToText() 即可。