【安全】CSRF & XSS

Cross-Site Request Forgery 跨站请求伪造

攻击者借助受害者的cookie骗取服务器信任
攻击者构造某个接口的请求参数,诱导用户点击或者用特殊方式让此请求自动执行,用户在登录状态下这个请求被服务端接收后被误认为是用户合法操作
防御方式
  1. token验证
  2. referer验证
Cross-Site Scripting 跨站脚本攻击 原理
产生的根源:将不受信任的用户内容直接拼接在html(或js、css)文档中。当 这个内容经过精心构造后,原本应该被解释成内容的部分被浏览器解释成脚本执行,从而达到执行攻击者逻辑的目的。
分类
存储型
> 将用户数据保存在服务端,具有很强的稳定性 > > e.g. 博客、评论

反射型
非持久型XSS
往往需要黑客诱使点击恶意链接生效
DOM 常见攻击目的
  • cookie劫持:攻击者盗取cookie,伪装成用户操作网站
  • 钓鱼:利用用户对当前访问网站的信任,在当前访问网站页面弹出或插入输入框让用户输入账号密码并发送到攻击者的服务器
  • 联合csrf进行攻击:伪装成用户向网站发送请求
防御方式
  1. 输入端进行检查和处理(编码、转义、过滤)
    • 存在的问题:
      • 改变用户输入的语义(原为富文本,需要保存html标签)
      • 编码转义后字符与输入不一致,引起后端校验规则和存储长度限制规则不一致的问题
  2. 【【安全】CSRF & XSS】输出端进行检查和处理
    • 存在的问题:内容可能在多处使用,容易有疏漏

    推荐阅读