jquery 以XSS安全方式替换 AJAX 响应中的选项

yeotifhr  于 2023-02-15  发布在  jQuery
关注(0)|答案(1)|浏览(164)

在AJAX响应的succcess方法中,我的目标是以XSS安全的方式执行以下操作:

  • 删除选择框中所有现有的options
  • 替换同一选择框中的选项。

下面是一种删除和替换选项的方法,但我不太相信这种策略是完全XSS安全的:

success: function (data) {
    $('#mySelBox').children().remove();
    $.each(data, function (index, value) {
        $('#mySelBox').append('<option value="' + value.id + '">' + value.description + '</option>');
    });
}

具体而言:

  • 我不确定value.id在这种上下文中是否是XSS安全的。
  • 我不确定value.description在这种情况下是否安全。

参考OWASP XSS cheatsheet)
[确保]所有变量都经过验证,然后被转义或净化,这被称为完美的耐注入性。
为此,我提出以下问题:

  • 在上面的上下文中,逃避和净化value.id的可靠方法是什么?
  • 在上述情况下,逃避和清理value.description的可靠方法是什么?

我还发现了这篇XSS预防文章,它让我意识到XSS预防是多么复杂,因为没有一个单一的解决方案:解决方案完全取决于上下文。

ojsjcaue

ojsjcaue1#

不使用连接的HTML字符串,而是使用DOM API创建<option>元素:

$.each(data, function (index, value) {
  var opt = document.createElement("option");
  opt.setAttribute("value", value.id);
  opt.textContent = value.description;
  MY-SELECT-BOX.append(opt);
});

相关问题