前台用的是chosenjs插件,对k-v进行解析,今天遇到一个问题,在ajax异步上传的接收回参的时候,之前很正常,今天突然就弹出Vuinerable。
后来换了一个不同类型的端口,没有弹框,排除前台问题。然后又仔细看数据,发现数据大约在3200条左右,然后在接口处控制了数量,仅返回300条数据,一切正常。
难道是数据量大导致插件崩掉了?不应该吧,后赶紧查生产数据,我的天,1.8W的数据量,-------没啥问题。立刻把问题定位到是数据源问题了。
随后开始进行对数据的排查,从2000条的数据到1000再到500到400到350,随着范围的缩减,终于找到了,原来是一个参数存在xss注入,chosenjs会过滤,并弹框警告用户。
具体数据如下:v:ddalert<script>alert(4)</script> k:23233
数据的问题。chosenjs在解析的时候认为是xss注入,故报错
貌似不是上面的原因,是因为
selCompany.append("<option value='"+json1[p].txt+"'>"+json1[p].val+"</option>");
// var b=$("<option value='"+json1[p].txt+"'></option>");
// b.text(json1[p].val);
// selCompany.append(b);
以上两部分都可实现selCompany节点添加option的操作,但是当json1[p].val=‘ddalert<script>alert(4)</script>’的时候,就会弹出来Vuinerable,当采用第二种方式的时候,当作字符串处理了。原因在于 append和text的机制不同。
结贴!
后来换了一个不同类型的端口,没有弹框,排除前台问题。然后又仔细看数据,发现数据大约在3200条左右,然后在接口处控制了数量,仅返回300条数据,一切正常。
难道是数据量大导致插件崩掉了?不应该吧,后赶紧查生产数据,我的天,1.8W的数据量,-------没啥问题。立刻把问题定位到是数据源问题了。
随后开始进行对数据的排查,从2000条的数据到1000再到500到400到350,随着范围的缩减,终于找到了,原来是一个参数存在xss注入,chosenjs会过滤,并弹框警告用户。
具体数据如下:v:ddalert<script>alert(4)</script> k:23233
数据的问题。chosenjs在解析的时候认为是xss注入,故报错
貌似不是上面的原因,是因为
selCompany.append("<option value='"+json1[p].txt+"'>"+json1[p].val+"</option>");
// var b=$("<option value='"+json1[p].txt+"'></option>");
// b.text(json1[p].val);
// selCompany.append(b);
以上两部分都可实现selCompany节点添加option的操作,但是当json1[p].val=‘ddalert<script>alert(4)</script>’的时候,就会弹出来Vuinerable,当采用第二种方式的时候,当作字符串处理了。原因在于 append和text的机制不同。
结贴!