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过程
- 客户端发送请求,给出协议版本,随机数A和支持的加密算法
- 服务器返回数据证书,告诉客户端加密算法和随机数B
- 客户端校验证书,生成随机数C,使用证书中的公钥进行加密,返回给服务器
- 服务器用私钥解密,得到随机数C
- 如果一致,说明可信
- 使用加密方法将三个随机数生成对称密钥来通讯