[MVC] 使用 Html.Raw 從Model 產出 JSON 字串
Checkmarx 弱點:Reflected XSS All Clients 該元素的值於程式流程中沒有被正確地過濾(Filter)或驗證,並最終顯示於使用者端方法DisplayDetails()這可能為跨站腳本(Cross-Site-Scripting)攻擊 一般在輸出網頁時內嵌 JSON 轉成 JavaScript <script> var DataItem = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.DataItem)); </script> 但如果model 裡有含html字串,會導致XSS 風險 宣告產出如下: <script> var DataItem = @Html.Raw( Newtonsoft.Json.JsonConvert.SerializeObject(Model.DataItem, new Newtonsoft.Json.JsonSerializerSettings { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml })); </script> JsonConvert.DefaultSettings = () => new JsonSerializerSettings { StringEscapeHandling = Newtonsoft.Json.StringEscapeHandling.EscapeHtml };