web 安全
xss (cross site script) 跨站点脚本攻击
向web页面插入恶意的可执行网页脚本代码,当用户浏览时,恶意脚本执行
达到盗取用户信息或其他侵犯用户安全隐私的目的。
1. 非持型xss,反射型xss
- 攻击者构造特殊的url,包含恶意代码
- 用户打开又恶意代码的url,网站服务器将恶意代码从url中取出,拼在html中
返回给浏览器 - 用户浏览器收到响应后解析执行,混在其中的恶意代码也被执行。
- 恶意代码窃取用户信息并发送到攻击者的网站或者冒充用户行为,调用目标网站
的接口进行指定操作
特点:1. 即时性,不经过服务器存储,直接通过http的get 或者 post 请求就能完成一次
攻击,拿到用户隐私数据;2. 攻击者需要诱骗用户点击;3. 反馈率低,比较难发现
防止:尽量不要直接向html中嵌入不确定性的字符串
2. 持久型xss,存储型
- 一般存在form表单等输入型的操作,如发帖,留言,提交文本信息等,恶意用户,将携带
恶意代码的输入提交到网站后台,数据库会持久保存。当前端拉取从后端返回的数据时,
数据中携带的恶意代码在用户浏览器中执行。- 例子:
当src错误时就会执行onerror事件
- 例子:
条件:前后端对用户输入的数据没做任何转义操作,前端拿到后端的数据,直接在页面上执行。
xss原因:把不可信的数据作为html插入到网页上
csrf(跨站请求伪造)
攻击者盗用用户的认证信息,模拟用户向后端发送各种请求。
- 用户登录A网站,并保留了登录凭证(cookie)
- 攻击者诱导用户访问B网站
- B网站向A网站的服务端发送了一个恶意请求,这时浏览器会默认带A网站的cookie
- A网站服务端接受到请求之后,由于cookie还在有效期内,所有会对用户的请求作出响应。
- 攻击完成,攻击者在用户不知情的情况下,冒充用户完成了攻击
预防:使用token 做通行证可以防止csrf;新增cookie的samesite属性,可以限制跨站点发送
cookie;服务接收到请求,可以对用户请求的origin 做判断。