最近网络安全行动如火如荼,有必要写点东西。首先,由魔方开发的多个应用系统通过三级等保认证,并通过多个资深安全团队测试。魔方作为快速开发平台,本着亲近开发者的目标,具有一些极其强大而又具有一定危险性的功能,今天讲讲一些安全相关的内容。

默认超管账号

魔方的默认管理账号是 admin/admin。系统部署完成后,第一个默认用户就是admin,该账户具有系统最高权限。此时如果不去修改默认密码,将会成为系统最大漏洞。其实已经不能叫做漏洞,而是大门敞开着。

从安全的角度上来讲,系统部署完成后,务必创建自己的管理员账号,然后禁用或彻底删除admin账号。

魔方设计了一个“抢管理员”的机制:

    1. 第一个注册登录的账号,包括经SSO第三方登录的账号,自动成为系统管理员,具有“管理员”角色
    2. 禁用admin账号,并将其角色设为“游客”,密码设置为随机字符串

密码强度

魔方注册用户,要求密码必须同时具有数字大小写字母和符号,长度8位起。

密码存储

魔方的密码存储方式是加盐存储,即使两个账号的明文密码相同,由于随机盐不同,最终存储在数据库中的密码也不同。在被拖库的最坏情况下,能够保证用户密码不会被字典爆破得到明文。

登录密码防爆破

魔方密码登录功能具有防爆破能力,短时间内,相同用户或IP地址连续登录失败多次后,系统自动封禁账号和IP地址 。

从用户体验上考虑,魔方并没有设计图形验证码或手机验证码等功能。

最好的防爆破措施,就是禁止密码登录!

SSO用户中心

在企业级实践中,各个应用系统直接关闭了注册和密码登录功能,而是统一对接到SSO用户中心。该架构也避免了子系统账号密码被爆破的可能性。

企业级用户中心一般基于魔方做二次开发,根据场景需要集成钉钉、企业微信等三方登录,或者设计手机验证码功能。把用户保护放到用户中心系统上面来。

SSL证书

为了保护数据传输安全,基于魔方开发的系统站点,务必挂载SSL证书,提供安全的https服务。

开发者模式

系统部署完成后,默认处于开发者模式,在每个页尾输出当前页所执行的Sql语句。

同时在列表页高级菜单内提供备份和清空数据库等多种供开发者使用的高级功能。

系统部署并调试完成后,强烈建议关闭“开发者模式”以及魔方“调试开关”。

头像上传

魔方支持用户上传头像,并没有限制图片类型。攻击者可能上传恶意脚本,但是该脚本根本没有执行机会。因为魔方是静态编译型系统,不是ASP/PHP时代的解析脚本执行。并且上传附件存放在独立于应用执行目录的附件目录,在部署时可以取消该目录的执行权限。上传时严格限制了文件名和路径,避免文件被错误存放到附件目录之外。由于附件目录在站点根目录之外,攻击者无法通过站点路由直接访问到文件。

防Sql注入

魔方系统的数据层由NewLife.XCode提供支持,XCode本身对所有输入参数进行强类型检查,对字符串参数进行防Sql注入检查。

如果仍然不放心,可以打开“参数化添删改查”,彻底杜绝Sql注入可能。

审计日志

魔方内的重要操作,全部记录了审计日志,任何人不能修改或删除。

星尘监控

企业级应用,一般都会部署星尘监控。对魔方的密码爆破或者漏洞扫描,本身就会触发星尘监控的告警。独立部署的星尘早把你的一切操作给记录下来了,别把蜜罐当成宝!

通过头像上传一个php,就号称攻破了魔方的大有人在。

总结

最后说两句:

    1. 对用户,改密码关调试,谁问密码也不给,守好大门。
    2. 对安全测评,有能耐就直接进攻,别提一堆“可能”再按上一个莫须有的漏洞。多学习,与时俱进,别犯常识性低级错误。