web安全

xss

xss的原理是攻击者向web页面中注入恶意脚本代码,在用户访问页面时恶意代码就会执行,从而窃取用户隐式信息。

常见的xss攻击主要有存储型反射型

存储型

攻击者通过表单将恶意代码提交给服务端数据库存储,当前端渲染服务端传来的数据时,就包含了该脚本,就会被执行。

常见的导致原因:

  • 前端未对用户输入内容做转义直接传递给后端
  • 后端为转义直接存入数据库
  • 后端对数据库中取出的值为进行判断转义直接返回给前端
  • 前端未对后端传来的数据进行转义直接执行

反射型

攻击者将脚本代码拼接到url中作为请求的参数,服务端将请求参数和查询或操作后的返回值返回后浏览器就得到了带有上述请求参数的数据,解析就执行了脚本代码。

需要诱导用户点击后,url中嵌入的脚本代码才会执行,如

https://xxx.com/xxx?default=<script>alert(document.cookie)</script>

防范

转义

无论是前端还是后端, 永远不要相信用户的输入,前端需要将用户输入以及浏览器端返回的数据进行转义后渲染,如< , >的转义

CSP

利用csp尽量减少xss攻击,其主要原理是限制其他域的资源加载和执行。常见的方式是通过配置http的header中的Content-Security-policy, 如:

Content-Security-Policy: default-src 'self'

HTTPOnly Cookie

很多xss的目的是为了窃取cookie, 那么我们课以设置cookie属性为HTTPOnly, 即仅用于http请求, 这样js就无法读取cookie, 达到防范的目的

CSRF

跨站请求伪造,即劫持用户已经登录过的网站发放的cookie,伪造用户身份访问网站。

流程如下:

  1. 用户登录网站A,在浏览器中产生了cookie
  2. 通过诱导用户在没有退出网站A的情况改下登录危险网站B
  3. B网站获取用户cookie并向A网站发送请求,即伪造用户身份发送请求。
  4. 站点A没有做CSRF防御,这B网站达到目的
    防范:

不让第三方网站获取到用户的cookie

对cookie设置SameSite属性,使得cookie只能在本域进行请求,无法跨域请求。

阻止第三方网站请求接口

Refer检查

HTTP请求头中的Refer属性向服务器表明了是从哪个页面发送的请求,服务端通过检查该属性来判断是否是第三方网站请求的接口。

缺点:并不安全,refer是可以被修改的

Token

新增一个token参数,随机且不可预测的,攻击者可以劫持cookie但是并不能获取这个随机的token,token在每次请求时作为参数一同发送过去,服务端进行验证。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值