1.这2天在熟悉项目框架结构,看到了过滤器中关于XSS跨站请求攻击的过滤器,特意网上查了一下 有关跨站请求攻击的东西.先记录下来所学 所思,省得后面忘了.
2.跨站请求攻击主要分为2种.
XSS跨站请求脚本攻击(当用户浏览该页面的时候,代码执行,从而实现攻击目的。对受害用户可能采取Cookie资料窃取、会话劫持、钓鱼欺骗等各种攻击)
CSRF 跨站请求伪造攻击(危害是攻击者可以盗用你的身份,以你的名义发送恶意请求。比如可以盗取你的账号,以你的身份发送邮件,购买商品等。)
3.XSS跨站请求脚本攻击主要分为2种:
反射性攻击:链接跳转式攻击.发布一个帖子,主体包含非法链接盗取用户cokie信息,发布之后当别人 访问了这个帖子的时候,可能因为执行了非法代码而导致问题
持久性攻击:非法脚本插入数据库,html页面显示数据库内容 隐藏执行非法代码.
4.跨站请求攻击相关案例:
CRSF: 登录成功农户端,查看用户个人信息,婚姻状态显示为离异,
此时打开XSS攻击网页,点击提交,触发修改婚姻状态的接口, 将婚姻状态修改为单身.
跳转的页面中包含img地址为 修改当前用户婚姻状态的接口,如果后台不对请求方式做控制,get请求也可以实现更新的功能,那么无疑会生产很大的问题, 解决的方案一般是 遵循http设计规范,get请求用于查询数据,post请求用于更新数据. 所以我这里后台更新婚姻状态的接口 由@RequestMapping ()改为@PostMapping(“updateInfo”) ,这样只能接口post的请求方式.
反射式XSS跨站脚本攻击: 没有开启xss过滤的情况下会 返回弹窗 xss
http://localhost:8080/pv_webT/test/send?queueName=<script>alert("xss")</script>
, 然而尝试的结果很失败,首先是浏览器端 针对xss反射攻击进行过滤,当前主流的IE,谷歌 搜狐等都有,即使我浏览器关闭,后端也关闭了xss过滤器 转义特殊字符, tomcat 服务器基于http协议 也会报出Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986的错误,网上搜索是有一些字符,当他们直接放在Url中的时候,可能会引起解析程序的歧义。这些字符被视为不安全字符,原因有很多。 (此处错误的原因就是特殊字符直接放入url地址中)
参考文献如下:https://blog.csdn.net/ezreal_king/article/details/72654157
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190204171819191.png?x-oss-process=image/watermark,type_Zm poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzMTM1ODEz,size_16,color_FFFFFF,t_70)
另外一种 持久性xss攻击,就是指客户提交的信息 存在脚本信息,存入数据库 显示读取时会出现问题. 客户数据提交的时候 对数据没有进行过滤,直接存入数据库,然后程序读取出来的时候 将带有脚本的信息显示在页面上 就会存在问题. (当然,现在项目中已经存在xss跨站攻击过滤器了,同时mybatis框架对于特殊符号也会进行转义 比如大小符号等).所以目前并不存在xss跨站脚本攻击 持久性及反射性的问题
最后:总结起来就是 常用的web网站攻击包括 xss攻击 sql注入攻击.
xss攻击包括持久性攻击及反射性攻击 ,分别针对脚本注入数据库 显示及脚本嵌入到链接地址的攻击,而xss跨站请求伪造 无疑就是利用已经登录的用户cookie信息 去修改 查询信息.
所以在后台接口涉及的过程中应当遵循 http1.1涉及规范 比方 修改信息应该使用 post接口,get请求仅用于查询数据. 同时resetful设计规范 也应该学习下.