【问题标题】:How to stop xss in JSON result in ASP.Net MVC 4如何在 ASP.Net MVC 4 中停止 JSON 结果中的 xss
【发布时间】:2012-05-14 16:12:32
【问题描述】:

我们的控制器上有一个动作,它返回一个带有 id 和名称的 json 结果。然后我们接受它并执行此操作..

    var markup = '';
    for(var i = 0; i < data.length; i++) {
        markup += '<option value="' + data[i].id + '">' + data[i].agentName + '</option>';
    }

    $("#agentId").html(markup);

+ data[i].agentName + 使我们面临 xss 攻击,因此我试图找出处理这种情况的最佳方法。

到目前为止,我的“最佳”选项似乎是看看我是否可以在服务器端使用 AntiXss 库并在返回之前对 agentName 进行编码。我说“最好”是因为(截至 2012 年 5 月 14 日)AntiXss 库受到很多人的讨厌,所以我不喜欢使用它的想法。

还有其他选择吗?

更新

<select id="agentId"></select>

我是如何构建要添加到的选择元素的..

【问题讨论】:

    标签: asp.net-mvc json xss asp.net-mvc-4


    【解决方案1】:

    您应该使用 jQuery 构建 DOM 元素并调用 text():

    $("#agentId").empty().append($.map(data, function(obj) {
        return $('<option />').val(obj.id).text(obj.agentName)[0];
    }));
    

    【讨论】:

    • 尝试此代码时出现以下错误.. NOT_FOUND_ERR: DOM Exception 8
    • 感谢 SLaks。这么少的文本中包含了这么多新的有趣的 jQuery 知识!
    【解决方案2】:

    你试过knockout.js吗?

    它有一个很棒的内置活页夹,可以用 json 数据填充您的选择元素。

    http://knockoutjs.com/documentation/options-binding.html

    【讨论】:

    • 我过去使用过 Knockout,我们考虑将它用于当前项目,但它有点矫枉过正。很高兴知道未来......谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多