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;
}
};
来源:CSDN
作者:爱米酱
链接:https://blog.csdn.net/qq_37050372/article/details/103569107