1、基本概念
1、什么是安全测试
安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。
2、安全测试的目的
(1)提升IT产品的安全质量
(2)尽量在发布前找到安全问题予以修补降低成本
(3)度量安全
(4)验证安装在系统内的保护机制能否在实际应用中对系统进行保护,使之不被非法入侵,不受各种因素的干扰
2、安全架构
1、管理层
1.1、技术
(1)集中认证
(2)集中授权
(3)集中用户管理
(4)集中日志管理
(5)集中告警管理
(6)补丁管理
1.2、非技术
(1)安全教育培训、宣讲
(2)流程化、体系化的制度建设
(3)安全类文档资料建设
2、应用层
2.1、业务安全
(1)防垃圾短信
(2)防止恶意订购
2.2、应用设计安全
(1)系统认证
(2)口令密码策略
(3)访问控制授权
(4)数据加密
(5)会话管理
(6)操作日志管理
(7)数据保护
2.3、应用编码安全
(1)输入、输出校验
(2)文件上传下载校验
(3)异常处理
(4)代码注释
(5)API安全
3、系统层
3.1、系统
(1)操作系统
(2)数据库系统
(3)中间件系统
(4)WebServer
3.2、系统安全加固
(1)最小化权限
(2)强口令策略
(3)最小化安装
(4)最小化服务
3.3、恶意软件防护
(1)防病毒,杀毒扫描
(2)主机防火墙
3.4、网络层
(1)网络拓扑安全设计,网络边界保护、网络防火墙设置等
(2)网络安全检测,如IDS/IPS
(3)网络接入保护,网络数据加密,如VPN等
(4)网络协议安全,如HTTPS等
(5)网络设备保护
3、安全用例
1、应用安全
1.1、系统帐号唯一性检查
1.2、帐号不能写死在代码中(硬编码),必须提供可管理或配置机制
1.3、认证基本要求
(1)当用户访问受限制资源或功能时,必须对该操作用户进行授权认证
(2)所有的认证和鉴权必须在服务端进行
(3)服务端的认证,不能受客户端的影响或者关闭认证
(4)认证失败后,不能提供详细的错误信息
1.4、验证码安全
(1)登录必须使用验证码
(2)验证码识别率控制
(3)三次认证失败,原表单失效
(4)验证码必须是单一的图片
(5)验证码字符随机生成
(6)验证码的生成不能与客户端提交的信息关联
(7)验证码随机生成的字符、数字等不能在客户端的静态页面源码中存在
(8)验证码使用一次后失效
(9)验证码和认证信息同时发送给服务端
(10)验证码校验通过后,才能进行用户名,密码认证
1.5、密码安全
(1)密码复杂度检查,强制密码策略
(2)修改密码时,必须验证原密码,且新密码必须二次验证
(3)口令在传输和存储的过程中必须是密文,不能明文
(4)页面输入密码必须是掩码,且输入框不支持拷贝操作
(5)防暴力破解措施检查
(6)从会话中信息中,不能获取操作密码和操作员帐号
(7)密码不能和用户名相同
(8)针对系统提供的缺省的操作员帐号和密码,提供修改入口,且需要在客户培训或者资料中提示用户修改
(9)禁止空密码
1.6、防止固定会话
(1)用户名和密码鉴权通过后,必须更换会话标识
(2)会话中不允许修改的信息作为会话状态的一部分在服务端存储和维护
1.7、连续登录失败后,锁定帐号
(1)服务端锁定帐号
(2)锁定策略可配置(失败次数、锁定时间、手动解锁)
1.8、禁止留后门
(1)禁止空口令
(2)禁止基于URL链接绕过安全机制对系统数据的访问,如:用管理员帐号登录系统后,通过查看网页源文件找出“URL”,退出系统后,通过在浏览器中直接输入URL地址访问系统数据。
(3)基于页面文件的绕过安全机制对系统或者数据的访问
(4)基于其他方式绕过安全机制对系统或数据的访问
1.9、禁止隐秘访问方式
1.10、操作日志
(1)对关键操作及安全事件需要有详细的日志记录
(2)禁止非查询操作日志
(3)日志访问需要权限限制
1.11、采用基于角色的帐号权限管理模型,授权和用户角色管理数据存放在服务端
1.12、敏感数据
(1)禁止在代码中存储明文的敏感数据
(2)敏感数据传输过程加密
(3)使用带服务器端证书的SSL传递敏感数据(HTTPS)
(4)敏感数据在数据库中加密存储
(5)敏感数据访问需要鉴权认证
(6)个人隐私数据过滤或者匿名处理
1.13、密钥
(1)禁止写死的传输密钥
(2)密钥不能明文存储
1.14、跨站请求伪造防范
1.15、接口
(1)接口提交的数据必须做校验
(2)接口的调用必须认证鉴权
1.16、SQL防注入检查
2、系统安全
2.1、操作系统不允许存在高风险级别漏洞
2.2、操作系统加固
2.3、操作系统病毒防护
2.4、操作系统登录密码检查
2.5、数据库缺省口令检查
2.6、数据库账户最小授权检查
2.7、数据库重要文件访问控制(如数据库的数据文件)
2.8、主流操作系统安全工具漏洞扫描
2.9、主流数据库安全工具库漏洞扫描
2.10、web应用安全工具扫描,不许存在高级别风险
2.11、web容器安全工具扫描,不允许存在高级别风险
3、网络安全
3.1、防火墙(包括软件防火墙和硬件防火墙)
3.2、安全协议
3.3、端口开放
3.4、网络病毒防护
4、常用安全工具
WebScarab - http消息分析工具,支持对http消息的修改编辑,适合web安全性篡改表单数据测试。
AppScan - web应用,进行自动化的应用安全扫描和测试
TCPDump - 网络嗅探器(抓包)
BurpSuite - 用于抓包、改包
Nmap - 端口扫描,端口矩阵
xDefend - 协议健壮性测试
SQLMap - SQL注入工具
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!