谈谈微微CMS的安全性设计
关于安全
微微CMS一直非常地注重安全,把安全放在首位,在设计初期,我们都考虑到了很多的地方,比如CSRF攻击,验证码设计,登录接口限制,RBAC权限设计等。本次就来展开说说
后台登录接口限制
对于后台登录接口限制,我们也做了足够的充分准备,除了常规的验证码之外(验证码使用post请求,且需要CSRF验证),如果一个账号连续输入密码错误超过5次,那么这个IP将会被封锁3分钟。当然了,这也是提高安全的一种手段。另外,微微CMS强制要求密码长度提高到8位,并且对密码的签名从MD5转换到了SHA256,并且将密码加盐提高到6位。对于这样的安全性设计,这样周密的防护措施,国内没多少系统能支撑吧。
角色权限控制
微微CMS在后台同样设计了完整的角色权限控制功能,对每一个接口,每一个功能,每个一个角色要赋予的权限都进行了细分。这对于需要多账户登录的的系统来说,权限把控能够节省很多的事情。
审批事件
对于非管理员提交的文章,全部都需要审核通过后才展示,前面提到的评论,留言亦是如此,这对于安全合规是必要的
违禁词功能
后台添加了违禁词功能,对于发文的内容中,包含有违禁词,都会被放置到审核里面。
事件日志
微微CMS目前对登录事件日志做了统计,能够清晰地发现后台登录情况。
备份管理
对网站内容数据进行备份(仅限于MySQL),并且能够进行快速的恢复和还原
CSRF防御
微微CMS在每个非GET请求上都使用了CSRF令牌请求验证,并且提供了一定的续期能力,在安装的时候,微微CMS会为每个系统生成不一样的加密KEY。CSRF的加密方式,生命周期,都提供了自由的配置。见配置文件
csrf:
csrf_key: ""
maxage: 7200
sec_key: 7B5D455DF0C8525062F3B28CBA44CAE4
会话加密
同样的,微微CMS的会话加密也进行了更加安全的配置,除了签名外以外,还加入了混淆。同样的支持自定义会话的时间,会话key,会话存储的db配置。见以下配置文件
session:
hash_key: J5GgzjsagvHztqVgah53Tbrp9rqoP3I6
block_key: bC7TEpNcgSk8RNhqycUag1Vmn8KIES33
cookie_key: ""
max_age: 7200
session_db: ""
后台路径配置
虽然,大家都喜欢后台为 /admin 这样的路径,但是很显然,这样后台也暴露在了攻击者的手上。微微CMS早都考虑到了这点,在初始化的过程中,微微CMS就提供了后台的修改路径配置。同时在后续需要修改后台路径配置的时候,也能够在配置文件中,找到修改
admin_url: /admin
留言,评论,都强制要求验证码
微微CMS在留言,评论都强制要求验证码进行验证,这不仅提高了网站被灌水的安全保证,同时也提高了攻击者的技术门槛,同时配合CSRF防御手段,攻击者无法通过接口拿到CSRF的密钥,所以安全性非常的高。同时在留言和评论都设计了后台审核功能,同时提高了网站的可控性,审计/安全性要求,满足行为检查。
更新
微微CMS在更新上也不会主动去检查用户的系统版本,从来都把安全性和安全更新交给用户自己判断,并且不提供在线更新功能(真的是考虑安全性为题,在线更新可能会导致用户系统被恶意推送后门的情况【其他系统有报道,特别是不维护的系统,突然又活过来了的这种推送】,我们并没有这样做,把选择权交给用户)真的安全,交给用户。
最后
微微CMS使用Golang进行开发,是一个安全,快速,轻量的好CMS系统,文档开放,协议友好,6年多一个人的坚持,始终免费,可商用,无套路!