一、安全测试介绍
安全测试就是发现软件安全漏洞的过程,旨在保护软件系统的数据与功能。安全测试以破坏系统的安全策略为目标进行攻击,从而检查系统的漏洞或薄弱环节。
对软件系统的要求:能够向合法用户提供服务,同时能够阻止非授权用户使用和破坏
二、安全测试常用方法
- 静态代码检查:通过代码走读的方式对源代码的安全性进行测试
- 动态渗透测试:主要借助工具或手工来模拟黑客的输入,对应用程序进行安全性测试
- 扫描程序中的数据:主要对内存进行测试,尽量发现诸如缓冲区溢出之类的漏洞
三、安全测试维度
- 客户端脚本安全测试
- 网络安全性测试
- 用户认证安全性测试
- 应用程序安全性测试
- 数据库安全性测试
四、客户端脚本安全测试
1、跨站脚本攻击(XSS)
XSS:跨站脚本(cross site script)为了避免与前端css混淆,改名为xss。
跨站脚本攻击:是指攻击者往Web页面里插入恶意Script代码,当用户浏览该页面是,嵌入的代码会被执行,从而达到恶意攻击用户的目的。
XSS攻击的危害:盗取各类用户账户;盗取、注入修改、删除客户端敏感数据;网站木马;肉鸡(控制受害机攻击别的机器)
XSS攻击案例:1.使用document.cookie获取当前网站的全部cookie数据;2.注入外部js文件
XSS攻击防御:
- HttpOnly:
- 给关键的Cookie都加上HttpOnly属性
- 浏览器禁止页面的javascript访问带有HttpOnly属性的Cookie
- 输入检查
- 检查用户输入的数据中是否包含了一些特殊字符,如<、>、'、"
- 如果发现存在特殊字符,则将这些字符过滤或者编码
- 输出检查
- 在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击
XSS漏洞扫描:
- 手工检测
- 校验结果精准,但是对于一个大型Web应用,效率比较低
- 软件自动检测
- 方便,却存在误报,或者有些隐蔽的XSS无法检测出
2、跨站点请求伪造(CSRF)
CSRF(Cross-site-request forgery)是指跨站请求伪造,通俗解释为攻击者盗用了你的身份,以你的名义发送恶意请求或进行某些非常操作
CSRF攻击防御:
- 验证码
- 验证码被认为是对抗CSRF攻击最简洁有效的防御方法,但是处于用户体验考虑,不能给所有的操作都加上验证码
- 验证HTTP Referer
- HTTP Referer可用于检查请求是否来自合法的“源”
- 添加token并验证
- 在请求地址中添加token并验证
五、网络安全性测试
1、数据加密
- HTTPS协议加密
- 要求网站使用https协议传输数据
- 程序数据加密
- 在程序中对接口数据进行加密,保证敏感数据不是按照明文进行传输
2、数据签名
- 数据签名:在发送请求的时候,增加一个无法伪造的字符串,用来保证数据在传输的过程中不被篡改
- 数据签名好处:防篡改、防伪造、防抵赖
Dos攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源。目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统停止响应甚至崩溃。
3、时间戳
- 时间戳机制主要用来应对非法的DOS攻击
- 服务端接收到请求后先拿当前的时间和请求中的时间做比较
- 一定时间之内的才会进行后续的业务处理
- 超过指定时间以外的直接返回错误码
4、流量限制
- 服务器所能处理的并发是有限,超过一定的并发可能会导致系统崩溃
- 基于对业务系统的保护,需要对请求访问速率进行限制,防止访问速率过高
六、用户认证安全性测试
1、认证与会话管理
认证(Authentication)认证实际上就是一个验证凭证的过程,目的是为了认出用户是谁
授权(Authorization)授权是授予用户可以操作的权限,目的是为了决定用户能够
1.1、密码
- 密码是最常见的认证手段,持有正确密码的人被认为是可信的
- 密码的优点是使用成本低,认证过程实现起来简单
- “密码强度”是设计密码认证方案时第一个需要考虑的问题
- 密码长度
- 密码复杂度
- 密码有限周期、历史密码记录
1.2、Session认证
1.3、Token认证
1.4、多因素认证
2、暴力破解
- 暴力破解:是指黑客利用密码字典,使用穷举法猜解出用户密码
- 暴力破解是现在最为广泛使用的攻击手法之一
- 为了提高效率,暴力破解一般会使用带有字典的工具进行自动化操作
- 提高暴力破解难度
- 要求用户设置复杂的密码
- 认证时加入验证码校验
- 对尝试登录的行为进行判断和限制
3、权限控制
某个主体对某个客体实施某种操作,而系统对这种操作的限制就是权限控制,也称为访问控制。
权限管理方式:1.垂直权限管理 2.水平权限管理
越权漏洞案例:对于普通用户来说,只有自己发布的信息才有权限删除。如果后台服务在删除的接口中没有进行权限的校验,就会出现越权漏洞,同理修改接口也存在越权漏洞。
七、应用程序安全性测试
1、SQL注入
SQL注入攻击是指通过构建特殊的请求参数传入应用程序,通过执行SQL语句进而执行攻击者所要的操作,主要的原因是程序没有细致地过滤用户输入的数据,导致非法数据侵入系统。SQL注入在安全问题中排行榜首!
SQL注入防范:
- 对用户的输入数据进行校验
- 不要动态拼装SQL,使用参数化语句
- 不要使用管理员权限的数据库连接,为每个应用使用单独的权限进行数据库连接
- 不要把敏感数据直接保存到数据库中
- 应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
2、文件上传漏洞
八、数据库安全性测试
- 数据备份和恢复
- 数据库对关键数据要配置备份恢复机制
- 敏感数据加密
- 对数据库中存储的敏感信息进行加密,不使用明文展示
- 审计追踪机制
- 系统设置相应的日志记录,特别是对数据修改和删除的记录,以便日后查证,确保系统的安全
- 认证和权限控制
- 对操作数据库的用户进行认证和权限控制
标签:密码,攻击,用户,认证,安全,简述,测试,权限 From: https://www.cnblogs.com/wsmbszyn/p/17726395.html