新建培训计划,在培训说明中输入XSS语句,点击确定提交,立马弹出XSS弹框;考试同样操作
我是在save之前添加tTrain.setTrainRemark(EscapeUtil.escapeHtml(tTrain.getTrainRemark()));
但不起作用,求助大神!
/**
* 保存培训计划
*/
@ResponseBody
@RequiresPermissions(value = {"train:tTrain:add", "train:tTrain:edit"}, logical = Logical.OR)
@RequestMapping(value = "save")
public AjaxJson save(TTrain tTrain, Model model, HttpServletRequest request) throws Exception {
AjaxJson j = new AjaxJson();
/**
* 后台hibernate-validation插件校验
*/
String errMsg = beanValidator(tTrain);
if (StringUtils.isNotBlank(errMsg)) {
j.setSuccess(false);
j.setMsg(errMsg);
return j;
}
//新增或编辑表单保存
tTrainService.save(tTrain);//保存
String operatorIds = request.getParameter("operatorIds");
// String choosep = request.getParameter("choosep");
String[] choosepone = null;
//培训人员新增编辑前进行清空
if(StringUtils.isNotBlank(tTrain.getId())){
tTrainUserService.deleteByTrainId(tTrain.getId());
}
if (null != operatorIds && !"".equals(operatorIds)) {
choosepone = operatorIds.split(",");
for (int i = 0; i < choosepone.length; i++) {
Set<String> s=new HashSet<>();
String insertDoc = request.getParameter("insertDocId");
if(StringUtils.isNotBlank(insertDoc)){
String[] split = insertDoc.split(",");
for (String s1 : split) {
if(StringUtils.isNotEmpty(s1)){
s.add(s1);
}
}
}
StringBuffer stringBuffer=new StringBuffer();
s.forEach(a->stringBuffer.append(a).append(","));
String userid = choosepone[i];
TTrainUser tTrainUser = new TTrainUser();
tTrainUser.setTrainid(tTrain.getId());
tTrainUser.setUserid(userid);
tTrainUser.setKnowledgeid(stringBuffer.toString());
tTrain.setTrainRemark(EscapeUtil.escapeHtml(tTrain.getTrainRemark()));//这是我添加的
tTrainUserService.save(tTrainUser);
}
}
j.setSuccess(true);
j.setMsg("保存培训计划成功");
return j;
}
tTrain.setTrainRemark(EscapeUtil.escapeHtml(tTrain.getTrainRemark()));
你这行是不是放错位置了,保存tTrain不是在地19行吗
出现问题先做诊断,确认问题出现的范围,再精准定位。
首先打开浏览器f12->NetWork,清空记录,然后点击按钮复现问题,出现弹框后,查看NetWork栏是否有新的网络请求,若是,则可能是后端原因;若不是,则一定是前端代码的原因;
你发一下你前端这个输入框这几行代码看一下