[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
};

留言

這個網誌中的熱門文章

net use 系統發生 1219 錯誤

[MS SQL]資料庫複寫 刪除發行集 無法刪除

[Windows]密碼複雜性需求 停用密碼複雜度