解决数据集预览、表格图表展示时没有处理数据XSS的问题

This commit is contained in:
datagear 2020-09-07 13:25:30 +08:00
parent b4f71fbe79
commit 2c67efb23c
3 changed files with 34 additions and 2 deletions

View File

@ -2278,6 +2278,38 @@
return "dataGearClientElement" + nextIdSeq;
};
/**
* 将给定值按照HTML规范转义如果不是字符串直接返回原值
*/
chartFactory.escapeHtml = function(value)
{
if(typeof(value) != "string")
return value;
var epn = "";
for(var i=0; i<value.length; i++)
{
var c = value.charAt(i);
if(c == '<')
epn += '&lt;';
else if(c == '>')
epn += '&gt;';
else if(c == '&')
epn += '&amp;';
else if(c == '"')
epn += '&quot;';
else if(c == '\'')
epn += '&#39;';
else
epn += c;
}
return epn;
};
/**
* 记录异常日志
*

View File

@ -3665,7 +3665,7 @@
//单元格内容渲染函数
renderValue: function(value, type, row, meta)
{
return value;
return chartFactory.escapeHtml(value);
}
},

View File

@ -792,7 +792,7 @@ po.previewOptions.url = "...";
var name = dataSetProperties[colIndex].name;
if(setValue === undefined)
return row[name];
return chartFactory.escapeHtml(row[name]);
else
row[name] = setValue;
},