1.什么是XSS攻击?

    XSS就是跨站脚本攻击,会想尽一切方法 将一段脚本内容放到目标网站的目标浏览器上解释执行。

    它分为两类:(1)非持久型 ,它是一次性的,仅对当前页面产生影响

                          (2)持久型,攻击数据将存储在服务端,攻击行为将随着攻击数据一直存在。

2.简单模拟攻击过程

   (1)通过评论表单提交将 <script>alert('123')</script>之类的代码提交到网站

    (2)网站后端对提交的评论数据不做任何操作,直接存储到数据库中

    (3)其他用户访问正常访问网站,并且需要请求网站的评论数据

    (4)网站后端会从数据库中取出数据,直接返回给用户

    (5)用户得到页面后,直接运行攻击者提交的代码,所有用户都会在网页中弹出123的弹窗

      这种攻击方式恶意代码会被存储在数据库中,其他用户在正常访问的情况下,也有会被攻击,影响的范围比较大

3.前端简单预防方法

      可以使用js工具类将输入的内容进行过滤:

var HtmlUtil = {
/*1.用正则表达式实现html转码*/
htmlEncodeByRegExp:function (str){
var s = "";
if(str.length == 0) return "";
s = str.replace(/&/g,"&");
s = s.replace(/</g,"<");
s = s.replace(/>/g,">");
s = s.replace(/ /g," ");
s = s.replace(/\'/g,"'");
s = s.replace(/\"/g,""");
return s;
},
/*2.用正则表达式实现html解码*/
htmlDecodeByRegExp:function (str){
var s = "";
if(str.length == 0) return "";
s = str.replace(/&/g,"&");
s = s.replace(/</g,"<");
s = s.replace(/>/g,">");
s = s.replace(/ /g," ");
s = s.replace(/'/g,"\'");
s = s.replace(/"/g,"\"");
return s;
}
};

4.后端简单预防方法
使用spring自带的工具类:

HtmlUtils.htmlEscape(keyword);