【发布时间】:2022-11-23 04:15:04
【问题描述】:
目前我正在使用 checkmarx 来查找 mi 代码的漏洞。 当我使用 jquery val() 函数然后尝试附加此 val 时,javascript 文件显然存在一些潜在的 xss 漏洞。我应该如何解决、清理或编码以避免这个问题?
这里有一些关于 checkmarx 标记为漏洞的例子:
function insertContactToTable(table) {
var ContactId = jQuery("#select_contacts").val();
var ContactName = jQuery("#select_contacts option:selected").text();
var Type = jQuery("#select_contact_type").val();
if (ContactId != "" && Type != "") {
var ID = ContactId + "_" + Type;
var Img = "<img class='image pointer-item' src='/app/assets/img/icon-package/cross.png' alt='cross' onClick='removeTableLine(\"" + ID + "\")'/>";
if (jQuery("#" + table + " tbody tr:last").length > 0) {
jQuery("#" + table + " tbody tr:last").after("<tr id='" + ID + "' name='" + ID + "'><td id='" + ID + "' name='contact_list'>" + ContactName + "</td><td>" + Type + "</td><td>" + Img + "</td></tr>");
} else {
jQuery("#" + table + " tbody").html("<tr id='" + ID + "' name='" + ID + "'><td id='" + ID + "' name='contact_list'>" + ContactName + "</td><td>" + Type + "</td><td>" + Img + "</td></tr>");
}
}
...
它标记了以下错误:
在 app\assets\js\administration.js 的第 542 行,应用程序的 insertContactToTable 在生成的输出中嵌入了不受信任的数据。这种不受信任的数据未经适当的清理或编码就直接嵌入到输出中,使攻击者能够将恶意代码注入到输出中。
线路542是个jQuery("#select_contacts").val();但它与其他使用 .val() 和 .text() 函数的行一样。
此外,在获取此 .val() 或 .text() 函数并尝试将它们与 append() 或 html() 函数一起使用时,其他函数也会发生相同的情况。
最后,我在获取 ajax 响应并尝试使用 append() o html() 附加它时也遇到了同样的问题。
注意:我在我的项目中使用 php,用它清理大部分变量。
【问题讨论】:
标签: javascript jquery xss checkmarx