Apache Shiro - CVE-2016-4437
前置知识
Apache Shiro
Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
什么是序列化
把变量从内存中变成可存储或传输的(字节流)过程称之为序列化(pickling)[1]
序列化的目的是:
- 可以存储到本地文件、数据库
- 可以将这些内存数据通过网络传输
简单来说就是:
对象——序列化——字节流——反序列化——对象
复习一下Cookie
cookie的组成
- name
- value
- path
- domain
- expires
- max-age
- Secure flag,指示浏览器仅仅在通过
安全/加密
连接(即SSL链接)才能使用该Cookie,但仍有MIMT的风险 - HttpOnly flag,告知浏览器不要再除http和https的请求之外暴露cookie,防止了一部分的XSS攻击(XSS攻击常通过JS脚本去调用
document.cookie
)
cookie的功能
- 记录会话状态(http无状态)
- 辨别用户身份
cookie的安全性问题
- cookie欺骗
- 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