跳转至

Apache Shiro - CVE-2016-4437

前置知识

Apache Shiro

Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。

什么是序列化

把变量从内存中变成可存储或传输的(字节流)过程称之为序列化(pickling)[1]

序列化的目的是:

  • 可以存储到本地文件、数据库
  • 可以将这些内存数据通过网络传输

简单来说就是:

对象——序列化——字节流——反序列化——对象

  • name
  • value
  • path
  • domain
  • expires
  • max-age
  • Secure flag,指示浏览器仅仅在通过安全/加密连接(即SSL链接)才能使用该Cookie,但仍有MIMT的风险
  • HttpOnly flag,告知浏览器不要再除http和https的请求之外暴露cookie,防止了一部分的XSS攻击(XSS攻击常通过JS脚本去调用document.cookie
  • 记录会话状态(http无状态)
  • 辨别用户身份
  • cookie欺骗
  • cookie截获

从而导致身份的盗用

  • 设置合理cookie有效期
  • 设置HttpOnly属性为true
  • 设置复杂的cookie,加密cookie
  • 重要信息放session,与cookie一同使用
  • 使用安全连接(HTTPS)

什么是硬编码

//ToDo

CookieRememberMeManager

APache Shiro安全框架在1.2.5版本以前,默认启用一个Cookie管理功能:CookieRememberMeManager。但是由于硬编码问题

参考

  • https://cloud.tencent.com/developer/article/1540882
  • https://zhishihezi.net/box/c7ecf406d93ed094559f1cd654950609

References

[1] 序列化,廖雪峰,https://www.liaoxuefeng.com/wiki/1016959663602400/1017624706151424