接口安全测试

一、后台接口分类

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. 在表单中预先植入一些加密信息,验证请求是此表单发送

时间: 2024-11-13 01:02:18

接口安全测试的相关文章

RobotFrameWork接口报文测试-----(三)demo的加强版(数据驱动测试)

在上一篇RobotFrameWork接口报文测试-----(二)demo的升级版基础上,将接口的xml的格式保存在xml文件中,然后程序如果增加一个接口,在xml文件里添加即可,无需修改自动化测试里的其他模块,然后在工具加case就可以了,但是接口取值的数据全部都是直接在case里面录入的,也就是说,每增加一条测试用例,就需要在工具内添加一条case,测试数据始终都是在工具内控制,这让以前使用excel管理过测试数据的我感觉很不爽,总感觉得把数据放到excel内,然后实现数据驱动测试. 围绕着这

Java面向对象作业-用接口方式测试向下转型

Java面向对象作业-用接口方式测试向下转型 根据视频的里实例 我们直接修改Test2测试方法: 1 package com.java1234.chap03.sec13; 2 3 public class Test2 { 4 5 public static void main(String[] args) { 6 People p1=new Student(); 7 p1.say(); 8 9 Student student=(Student) p1; 10 student.say(); 11

rfw使用接口库测试--FAIL : UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters in position

使用requests库进行接口测试时 需要构造dictionary来填充http的文件头headers 填充后请求报错 FAIL : UnicodeEncodeError: 'ascii' codec can't encode characters in position 解决方法 在文件RequestsKeywords.py中加入 import sys reload(sys) sys.setdefaultencoding( "utf-8" ) 解决 rfw使用接口库测试--FAIL

学习总结——JMeter做http接口压力测试

JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个接口共同作用. 压测时间设定 通常时间设为10 – 15 分钟,如果涉及疲劳测试的话时间可根据实际情况设定,1周,一个月不等. 测试数据准备 如果需要测试的数据量很大的话,需要造数据,造数据可以JMeter操作数据库来完成,也可以用Python造数据. 结果查看

接口API测试和返回值JSON解析的插件

火狐插件1.   HttpRequest作用:接口API测试例子:http://192.168.10.61:8080/ZHCS/user/loginApp.do?phone=admin&pwd=admin接口以?作为结束, 连接用& 2.   JSON-handle作用:对json进行解析

Jmeter使用实践-接口diff测试

大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmeter 入门门槛较低,安装也比较方便,根据自己的需要可以扩展一些插件,总之一句话: 优点太多了. 那么问题来了,为什么要做接口 diff 测试? 产品迭代较快,提高已有 case 回归的效率,减轻工作量: 通过 diff 可以看到新的改动对已有功能的影响: 可以根据修改的代码设置 case,有针对性的测试: 在开发联调阶段提前定位发现的问题.

使用Loadrunner进行http接口压力测试

业务描述: 在业务系统里进行查询操作,查询的结果是通过请求http接口,从系统中处理并将结果以json字符串返回. 本文就讲述使用Loadrunner对此类接口进行压力测试并记录相关的性能指标数据: 一.安装Loadrunner 本次测试过程使用Loadrunner 11.0版本. 二.部署环境 1.接口服务器一台; 2.用于运行Loadrunner的压力测试机1台或N台 ,在条件允许下,尽可能提供高配置的CPU 和内存. 3.接口服务器和压力测试机建议应部署于同一个局域网内,否则测试过程和结果

JMeter接口压力测试课程入门到高级实战(目录)

章节一压力测试课程介绍1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介:讲解课程安排,使用的Jmeter版本2.常用压力测试工具对比简介:目前用的常用测试工具对比章节二 JMeter4.x基础知识讲解和压测实操3.Jmeter基本介绍和使用场景4.本地快速安装Jmeter4.x简介:GUI图形界面的安装1.需要安装JDK8.或者JDK9,JDK102.快速下载5.Jmeter目录文件讲解简介:讲解jmeter解压文件里面的各个目录,文件等6.Jmeter语言版本中英文切

Jmeter接口压力测试

前言 压力测试的工具挺多的,但看了其他人的文章介绍,还是选了jmeter,开源.免费啊, 下载 下载地址: https://jmeter.apache.org/download_jmeter.cgi 环境配置 下载后解压zip到任意目录,然后配置环境变量 变量名JMETER_HOME,变量值F:\apache-jmeter-4.0  在变量名CLASSPATH新增 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorp