网络安全与https

XSS

用户注入代码

  • 存储型:攻击者上传信息,提交到数据库
  • dom型:前端将不可信内容插入到页面
  • 反射型:攻击者将恶意代码插入到url中,url参数被前端取出并执行

防止方法:前端过滤展示,后端过滤输入

编辑器的xss
白名单:使用cheerio解析html,只允许合适的标签和标签属性
黑名单:过滤标签和javascript,error等属性

防御方法

  • 转义
  • cookie设置,httponly防止js读取
  • 输入长度限制
  • 输入内容限制

csrf

跨站攻击,利用受害者的cookie等信息,让受害者在第三方页面向已登录页面发请求

防御方法

  • get方法不改数据
  • 使用服务器的token
  • 检测referer或origin
  • samesite,限制第三方cookie。有strict,lax和none三种,strict完全不使用第三方cookie,laz旨在链接,预加载请求,get表单时可以,post,iframe,ajax,image时不行。

csp

  • 服务器添加content-secruity-policy响应头来指定规则
  • html添加标签来指定csp规则

语法:设置指令,key是资源,值是none,self(自身),eval,url(允许的域名),inline(内联)等

https

特点

  • http+ssl/tls
  • 加密传输
  • 443端口
  • 需要ca证书
  • 有状态
  • 对称加密来传输数据,非对称加密来身份校验
  • RSA

https过程

  1. 客户端发送请求,给出协议版本,随机数A和支持的加密算法
  2. 服务器返回数据证书,告诉客户端加密算法和随机数B
  3. 客户端校验证书,生成随机数C,使用证书中的公钥进行加密,返回给服务器
  4. 服务器用私钥解密,得到随机数C
  5. 如果一致,说明可信
  6. 使用加密方法将三个随机数生成对称密钥来通讯
支持作者

如果我的文章对你有帮助,欢迎 关注和 star 本博客 或是关注我的 github,获取更新通知。欢迎发送邮件到hpoenixf@foxmail.com与作者交流