接口安全测试

一、后台接口分类

1、接口类别:restful(json) soap(xml)

2、协议 :http https(ssl)

3、restful接口请求类型

get操作是安全的

post的操作是不安全的 同put

delete也是不安全的

4、现状和问题

大部分APP的接口都采用restful架构,restful最重要的一个设计原则就是客户端与服务端的交互在请求之间是无状态的。大部分都采用token的认证方式。

token分别在两台手机上登陆微信

二、接口安全设计原则

1、接口类型尽量使用https带SSL证书模式

2、接口参数使用签名(非对称加密算法)

3、接口参数需要校验

注册:注册机

4、每次请求需要用户命令

5、多次失败后需要有锁定机制

6、接口对应用户权限,用户只能调用有权限的接口

用户的权限

接口权限:系统有多个模块,每个模块有多个接口,我只购买了2个模块的服务,只分配两个模块的接口来使用---license

7、系统接口做过负荷机制用来保护系统安全

过负载----保护系统,再好的系统也有瓶颈,超过请求后提示系统忙

(1)提交请求后立即提示系统忙

(2)提交请求后一段时间后提示系统忙

静态:

动态:

三、接口安全设计注意事项:

1、对用户任何输入的都需要注意

2、不能只在客户端进行校验

3、服务端返回的任何服务错误信息不要返回给用户

四、常用接口安全测试类

1、sql注入

(1)sql拼接:jdbc/obdc ----链接数据库

select * from userInfo where userId=1 ---查询id为1的用户

sql = sql + condition

(2)使用第三方组件,比如java里面的hibernate,ibatis,jpa

通过各种sql查询业务信息,甚至破坏系统表

(3)sql注入注意事项:

1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和双"-"进行转换等。

2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。

5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装

2、xss攻击

(1)描述:利用XSS的攻击者进行攻击时会向页面插入恶意Script代码,当用户浏览该页面时,嵌入在页面里的Script代码会被执行,从而达到攻击用户的目的。同样会造成用户的认证信息被获取,仿冒用户登录,造成用户信息泄露等危害

(2)安全风险:文字中可以输入js脚本,例如<script src=‘wrong URL’></script>这种有安全性的脚本,其它用户进入后可以获取该用户的cookie信息,即可以对该用户资源进行操作

3、越权访问

(1)描述:在一个产品中,一个正常的用户A通常只能够编辑自己的信息,别人的信息无法查看或者只能查看的权限,但是由于程序不校验用户的身份,A用户更改自己的id值就进入了B用户的主页,可以查看、修改B用户的信息,这种漏洞我们就将其称之为越权漏洞

(2)举例:用户登录app成功,系统记录用户id,例如userid为1。

安全风险:此时用户通过工具发送消息将userid设置为2后可能登陆成功,及用户可以通过修改userid来访问其它用户资源,引发严重问题。

4、csrf 请求伪造

(1)描述:CSRF是一种对网站的恶意利用,过伪装来自受信任用户的请求来利用受信任的网站。

(2)举例:在APP上打开某个网站时,突然弹出您已经中奖的提示和链接

安全风险:点开链接后会跳转到对应异常界面,并且用户本地信息可能已经被获取,如果在跳出界面进行相关操作,比如银行相关操作会引起更大的安全问题和严重损失。

(3)安全防护

1. 使用post,不使用get修改信息

2. 验证码,所有表单的提交建议需要验证码

3. 在表单中预先植入一些加密信息,验证请求是此表单发送

learn to fail, failure to learn

【整整200集】超超超详细的Python接口自动化测试进阶教程合集,真实模拟企业项目实战

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接口安全测试用例一般可以从以下几个方面进行考虑: 1.输入安全性测试用例:测试是否存在 SQL 注入、XSS 攻击、命令注入等漏洞,例如: - 在接口输入参数中注入特殊字符,如单引号、双引号、尖括号等,检查接口返回结果是否存在异常; - 在接口输入参数中注入 SQL 语句,如 ' OR 1=1--,检查接口返回结果是否包含敏感信息; - 在接口输入参数中注入系统命令,如 ;ls,检查接口返回结果是否包含系统信息。 2.身份认证与授权测试用例:测试接口是否正确实现身份认证与授权机制,例如: - 测试接口在未登录状态下是否可以访问; - 测试接口在登录状态下是否可以访问未授权资源; - 测试接口在登录状态下是否可以访问已授权资源。 3.访问控制测试用例:测试接口是否正确实现访问控制机制,例如: - 测试接口是否存在未授权访问路径,如未授权的 API 接口或文件路径; - 测试接口是否正确实现权限分级,如超级管理员、普通用户等; - 测试接口是否正确实现数据隔离,如不同用户之间的数据是否互相隔离。 4.数据加密测试用例:测试接口是否正确实现数据加密机制,例如: - 测试接口是否使用 HTTPS 协议进行数据传输; - 测试接口是否正确实现数据加密,如对敏感信息进行加密存储等。 5.日志记录与审计测试用例:测试接口是否正确实现日志记录与审计机制,例如: - 测试接口是否正确记录用户操作日志; - 测试接口是否正确记录异常日志; - 测试接口是否正确记录安全事件日志。 以上是接口安全测试用例的一些例子,具体测试用例的编写还需要根据具体的接口安全需求进行设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值