- XSS
XSS攻击全称跨站脚本攻击,XSS是一种在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。
常见的 XSS 攻击有三种:
DOM-based 型、反射型、存储型。
反射型、DOM-based 型可以归类为非持久型 XSS 攻击。
存储型归类为持久型 XSS 攻击。DOM-based 型:利用dom本身的缺陷,进行攻击
<img src="{{img.src}}">
//返回的 img.src=/xxxx" onerror=xxx"
//这样放到img的src中就成了这样<img src="/xxx"       onerror=xxx">
//src肯定会加载失败,然后执行了onerror中注入的恶意代码,达到攻击效果
反射型:恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
存储型:前端页面中表单提交的数据存在恶意代码被保> DOM-based 型:利用dom本身的缺陷,进行攻击
有这样一个url:http:xxxxx.con?name=xxx(xxx是恶意代码)
//传到后端的参数name 被后端接收之后,响应的页面包含name这个变量的,会把这个name的内容注入到页面上面,达到攻击的效果
- 防范措施
X-XSS-Protection头 (现代浏览器的防范措施)
过滤:对用户的输入进行过滤,移除用户输入的Style节点、Script节点、Iframe节点
编码:HTML Entity 编码
将重要的cookie 设置成http only 这样就不能通过js获取到该cookie了
- CSRF(跨站请求伪造)
利用网站漏洞非法获取被攻击网站的cookie等信息
- 防范措施
使用token:每次求情携带token进行有效验证
Referer 验证:只接受本站的请求,服务器才做响应;如果不是,就拦截
- SQL 注入
接收的参数可以使用字符串拼接的方式插入到SQL查询中
- 防范措施
验证输入类型:比如某个视图函数接收整形id来查询,那么就在URL规则中限制URL变量为整型
参数化查询
参数化查询:比如引号、分号和横线等。使用参数化查询时,各种接口库会为我们做转义工作
- 点击劫持
点击劫持就是利用视觉欺骗用户将一个危险网站设置透明,然后在其上方设置一个按钮,当你点击这个按钮的时候,就触发底部透明的危险网站的事件,从而欺骗用户点击一个按钮或者输入一个值。或者是将一个网站通过iframe进来,通过透明度设置不可见,诱导用户点击可见的一个按钮触发事件达到自己的一个目的等
- 防范措施
csp(Content-Security-Policy)
设置http响应头 x-Frame-Options
使用window.self和window.top判断
window.self返回一个指向当前window的一个引用
window.top 返回窗口体系中最顶层窗口的引用
网友评论