[MVC] 使用 Html.Raw 從Model 產出 JSON 字串
Checkmarx 弱點:Reflected XSS All Clients
該元素的值於程式流程中沒有被正確地過濾(Filter)或驗證,並最終顯示於使用者端方法DisplayDetails()這可能為跨站腳本(Cross-Site-Scripting)攻擊
一般在輸出網頁時內嵌 JSON 轉成 JavaScript
宣告產出如下:
該元素的值於程式流程中沒有被正確地過濾(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
};
留言
張貼留言