xss--跨站脚本攻击

1、存储型


利用内容验证的漏洞,将代码嵌入,存入数据库后,用户访问该链接即下载了相关代码,如cookie通过document.cookie被泄露。

(在这里就可以引出保护cookie就可以防止部分xss攻击,cookie内置有保护字段httponly等,详见cookie安全设置)

2、反射型


嵌入脚本使用户执行并请求服务器,携带会话令牌返回给攻击者,于是攻击者拿到了会话令牌。

3、基于dom的


在传输过程中恶意修改源代码(html),修改web页面的数据。


csrf--跨站请求攻击

利用用户的登录状态,做一些攻击请求。

之间的关系是xss可以进一步变成csrf,也可以叫xsrf,主要是再获取到会话令牌或者cookie之后有没有继续进行一些伪造请求


防御:

xss:

  1. 请求字段中的http-only字段,可以禁止浏览器端通过document.cookie访问到cookie
  2. 输入过滤(针对存储型)。vue可以引入xss,主要就是对不该出现的标签进行过滤。
  3. 可以对纯文本内容采用转义。html可以使用实体编码html字符实体。

csrf:

主要原则是:由于是第三方(不同源) 发送请求,可以增加一些验证信息,比如验证码或者token,还有可以查看请求来源,最后就是set-cookie的samesite属性。

  1. 添加验证码或者隐藏域的令牌验证。(注意验证码使用完毕之后需要销毁掉)
  2. 在表单增加csrf-token, 在a 和 form 标签后加入 token,即放置隐藏标签存储name和value。
  3. 在http请求头中增加自定义属性作为token。
  4. 可以使用restful风格的请求方式
  5. set-cookie中的SameSite的strict、lax、none,注意none要和secure属性一起使用(只能是https的请求才可以)。
  6. 判断refer和origin,origin(不包含路径信息)的优先级高于refer(包含路径信息,可以设置不出现refer)

因为看了太多文章,链接就不放了,感谢大家的分享,希望共同进步!