目录
- XSS攻击
- XSS概念
- XSS案例
- XSS攻击类型
- 反射型
- 存储型
- 总结
- CSRF
- CSRF概念
- CSRF防御
- 方式一:跨域禁止携带cookie
- 方式二:设置SameSite属性为Strict
- 方式三:验证Referer字段(利用浏览器功能)
- 方式四:Token
XSS攻击
XSS概念
定义: XSS(Cross-site scripting)跨站脚本攻击。由于前端的CSS
混淆,所以取名为XSS。
原理: 跨站是指浏览器运行非本网站的内容。脚本一般是JavaScript。XSS攻击通常指的是攻击者注入恶意代码到网页使用户加载并执行攻击者恶意制造的网页程序。
XSS案例
- 如果某些网站弹出的广告等等。
- 评论区的留言等等。
XSS攻击类型
反射型
攻击流程:
有的会将原本带有XSS恶意攻击的链接通过短链生成新的网址。
攻击步骤:
1、攻击者在url后面的参数中加入恶意攻击代码
2、当用户打开恶意代码的url的时候,网站服务器端将恶意代码从服务器端提取,拼接在html中并返回给浏览器端
3、用户浏览器接收到响应后执行解析,其中恶意代码就被执行
4、攻击者将通过恶意代码来窃取到用户数据并发送到攻击者网站,攻击者会获取到比如cookie等信息,然后使用信息来冒充用户的行为
存储型
攻击步骤:
1、攻击者在网站的评论等功能模块将恶意代码伪造成评论发送请求至服务端,该恶意代码会被存储在数据库中
2、当其他用户打开含有该恶意代码的页面时,浏览器会发送请求将恶意代码从服务器端获取并渲染到页面中
3、浏览器渲染到恶意代码时会将其执行,窃取到用户数据后发送到攻击者网站,攻击者会获取到比如cookie等信息,然后使用信息来冒充用户的行为
总结
防范 XSS 是不只是服务端的任务,前端的过滤在此过程中也起到了至关重要的作用,所以防范操作需要后端和前端共同参与。虽然很难通过技术手段完全避免XSS,但我们原则上减少漏洞的产生。
CSRF
CSRF概念
定义: CSRF(Cross-Site Request Forgery)跨站请求伪造。在用户不知情的情况下,让用户在已登录的Web应用程序上执行非本意的操作。
攻击流程:
1、用户在一个正常的页面下浏览并且登录了该网站
2、在这个网站没有关闭的情况下,用户又打开了一个恶意的网页(上面植入了一些恶意的代码),它会伪造一个正常的报文去向正常服务器发送请求,由于用户的cookie处于登录态,所以只要伪造的请求跟正常的一样,浏览器在发送请求的时候就会自动携带上cookie,从而也就能够实现删除帖子、发布帖子等一系列操作
CSRF防御
方式一:跨域禁止携带cookie
后端处理跨域时禁止浏览器携带cookie
@CrossOrigin(allowCredentials="false",allowedHeaders="*")//解决CSRF,跨域禁止Cookie
方式二:设置SameSite属性为Strict
后端设置 response
的SameSite属性为Strict
方式三:验证Referer字段(利用浏览器功能)
方式四:Token
直接使用token代替cookie,每次发送请求都需要携带token或者将token放置在请求头的某处。通常token会以本地存储的方式寄存到浏览器中。后端接收到Token后,需验证身份才放行。