精华内容
下载资源
问答
  • 身份验证 token 前端自动登陆 OpenSSL + perl软件安装: https://blog.csdn.net/sunhuansheng/article/details/82218678 OpenSSl 、 Perl这个软件安装无要求,一路next 先装Perl再装OpenSSL 检查你环境变量中...

    知识点

    1. 身份验证 token
      • 前端自动登陆
      • OpenSSL + perl软件安装: https://blog.csdn.net/sunhuansheng/article/details/82218678
        • OpenSSl 、 Perl这个软件安装无要求,一路next
        • 先装Perl再装OpenSSL
        • 检查你的环境变量中的系统变量是否有这两个软件的启动路径
    2. 自动化测试【工具】
      • 目的:
        • 代码质量 【性能问题】
      • Mocha 摩卡
      • Jest
        • jest vs Mocha
          1. Mocha我们单一运行某一个文件,而jest可以全局检测项目test文件
          2. jest运行命令为:Jest,mocha为:Mocha 文件名称
    3. yarn 它和npm/cnpm 一样 也是一种包管理器
      • 安装
      • $ cnpm i yarn -g

    mocha

    1. 作用:测试代码质量
      • 三个任务的执行顺序
      • 这段代码运行结束需要耗费的时间
        这是token的思维导图
    展开全文
  • 这段时间涉及到一个项目,老师第一次认真讲token,入坑很浅,花了一天算搞懂了一点点,做个笔记的目的是防止自己下次忘记,肯定有很多不完整的地方,可以通过评论区告诉我哈! 接下来的整个文章都是在讲述token的...

    废话:

    这段时间涉及到一个项目,老师第一次认真讲token,入坑很浅,花了一天算搞懂了一点点,做个笔记的目的是防止自己下次忘记,肯定有很多不完整的地方,可以通过评论区告诉我哈!
    接下来的整个文章都是在讲述token的创建和使用。

    前言:

    整篇笔记实现了“登录”和“修改”两个方法,当用户没有通过“登录”方式获得token时,在执行“修改”方法时会报错,只有获得了登录方法给的token,并将token加入到“修改”方法请求的头部分,才能完成修改。
    整体思维逻辑是写一个token认证方法,再结合mvc写一个过滤器,过滤器实现对所有网页进行过滤,并实现token认证方法。最后写两个注解,当某个方法上面的注解为@PassToken,则代表该方法不需要token令牌认证,直接过,而注解为@UserLoginToken的方法则需要进入到token认证方法中进行认证,如果认证通过则执行,不通过则不执行下面的方法。

    0.引入依赖

    要实现token令牌加密需要引入jwt依赖,要实现过滤就要引入web依赖,这里面我将我所用到的依赖附上,仅供参考。
    在pom.xml文件中添加maven依赖,添加后点击右侧“maven”,刷新下载即可

     <!--引入jwt依赖-->
            <dependency>
                <groupId>com.auth0</groupId>
                <artifactId>java-jwt</artifactId>
                <version>3.4.1</version>
            </dependency>
    
    <!--        引入mybatis-->
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>2.0.1</version>
            </dependency>
    
            <!--mysql驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <scope>runtime</scope>
            </dependency>
    
            <!--lombok-->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>1.18.16</version>
                <optional>true</optional>
            </dependency>
    <!--        web依赖-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    

    1.基本结构解释

    这里我已经写了一个实体类,对应数据库中的数据表“adminfo”,在数据表中有一些测试数据,这些数据包括id、密码、用户名
    在这里插入图片描述
    在“entity”包中,对应创建了它的实体类,取名“Admin”
    在这里插入图片描述
    我们使用mybatis连接了数据库,并在“Mapper.xml”文件中编写了三个方法,分别是“通过id和密码登录”、“通过id来修改用户名”、“通过id来得到密码”。
    这些都是为了测试使用,自己的具体的业务逻辑已自己的实际需要为准。
    在这里插入图片描述

    <!--登录-->
        <select id="login" resultType="com.example.entity.Admin">
        select * from adminfo where id =#{id} AND pwd=#{pwd}
        </select>
    
    <!--修改user_name-->
        <update id="update" parameterType="com.example.entity.Admin">
            UPDATE adminfo SET user_name=#{userName} where id = #{id}
        </update>
    
    <!--    通过id获得密码-->
        <select id="byIdGetPwd" resultType="java.lang.String">
        select pwd from adminfo where id =#{id}
        </select>
    

    对应“Mapper.xml”文件,我们写了“mapper接口层”、“service业务实现层”、“controller执行层”,这里就不一一贴出代码了。
    最后在Postman里面测试,成功实现了三个方法。
    在这里插入图片描述
    在这里插入图片描述
    通过测试我们可以看到,即使用户没有先执行登录方法,依然可以执行“通过id修改用户名”的操作。这是不符合逻辑的,一个未登录的用户怎么能够修改自己的用户名呢?此时的token就上线了。
    token的作用是根据用户信息生成一串加密码,在用户登录成功后后端将这串加密码发送给前端,前端将加密码存起来,下次请求数据时前端将token放到头部分传给后端,后端验证传来的token,确定了用户无误后才对应给请求做数据传输操作(释放权限)。
    我们来想象一个场景,如果我们向后端发送一个请求获取用户我的昵称,那么后端是怎么识别你要获取哪一个呢?当然是通过你传去的token判断你是哪一个用户,最后对应你的数据给你传只属于你的昵称。

    2.创建token工具类

    既然token是一串根据用户信息加密的乱码,那么怎么生成它呢?这时候我们就需要一个token生成的工具类。它不是固定的,算法不同生成的不同,但它是根据用户给与的信息创建的,不会轻易改变的。
    这里我们引入jwt依赖的token生成类,根据用户的id和密码去做生成。
    在这里插入图片描述

    @Service
    public class TokenUtil {
        /**
         * 根据用户名和密码,使用加密算法生成JWT的token令牌。
         * @param admin
         * @return
         */
        public String getToken(Admin admin) {
            String token = "";
            token = JWT.create().withAudience(String.valueOf(admin.getId()))
                    .sign(Algorithm.HMAC256(admin.getPwd()));
            return token;
        }
    }
    

    3.创建注解,做判断甄别

    并不是每一个操作都需要判断浏览器头部分中有没有token令牌。我们来想象一下,前端访问一个登陆需求,此时我们后端收到请求后需要验证它是否有传来token吗?如果没有就不为它执行,如果有再执行。这是错误的,因为用户登录之后才会根据登录的信息产生token令牌,又怎么会一开始就有了token令牌呢?所以我们需要准确判断执行哪些方法需要做token验证,而哪些又不用。
    这里给出的方案是给两个@注解。一个注解为需要(UserLoginToken),另一个为不需要(PassToken),我们在controller层中给对应的方法上面进行注解,这样就可以做甄别了。
    在这里插入图片描述

    @Target({ElementType.METHOD,ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface PassToken {
        //设置默认值为true
        boolean required() default true;
    }
    

    在这里插入图片描述

    /**
     * 自定义注解@UserLoginToken
     * 添加该注解的方法必须进行token验证,即-必须登录获取token
     */
    @Target({ElementType.METHOD,ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    public @interface UserLoginToken {
        //设置默认值为true
        boolean required() default true;
    }
    
    

    这里要注意,我们创建的是“注解”,所以java的类型一定要选择正确,选择如下类型。
    在这里插入图片描述

    4.创建token验证类

    此时我们就可以编写token验证类了,它的作用是得到前端请求过来的“token”,判断“token”是否合格,合格则放行,不合格则“终止并发布提示”。
    自定义的token验证类其实是继承了“HandlerInterceptorAdapter”类,并重写了它里面的“preHandle”方法。
    在这里插入图片描述

    附上整个代码:

    package com.example.interceptor;
    
    import com.auth0.jwt.JWT;
    import com.auth0.jwt.JWTVerifier;
    import com.auth0.jwt.algorithms.Algorithm;
    import com.auth0.jwt.exceptions.JWTDecodeException;
    import com.auth0.jwt.exceptions.JWTVerificationException;
    import com.example.PassToken;
    import com.example.UserLoginToken;
    import com.example.service.AdmInfoService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.method.HandlerMethod;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.lang.reflect.Method;
    
    /**
     * @title:AuthenticationInterceptor
     * @description:认证请求头中的token的拦截器类
     * @Author:Jabari
     */
    public class AuthenticationInterceptor extends HandlerInterceptorAdapter {
    
        @Autowired
        private AdmInfoService admInfoService;
    
        /**
         * 执行目标方法之前拦截验证Token
         * @param httpServletRequest
         * @param httpServletResponse
         * @param object
         * @return
         * @throws Exception
         */
    //    重写方法,实现拦截
        @Override
        public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,Object object)
            throws Exception{
            //从http请求头中取出token
            String token=httpServletRequest.getHeader("token");
            //如果不是映射到方法(即-路径下的方法)直接通过
            if(!(object instanceof HandlerMethod)){
                return true;
            }
    
            HandlerMethod handlerMethod=(HandlerMethod) object;
            //拿到方法头部的注解
            Method method=handlerMethod.getMethod();
            //检查是否有PassToken注释,有则跳过认证
            if(method.isAnnotationPresent(PassToken.class)){
                //进入到PassToken的注解中,查看里面required的值是否为true(默认true)
                PassToken passToken=method.getAnnotation(PassToken.class);
                if(passToken.required()){
                    return true;
                }
            }
    
            //检查是否有UserLoginToken注释,有则认证
            if(method.isAnnotationPresent(UserLoginToken.class)){
                UserLoginToken userLoginToken=method.getAnnotation(UserLoginToken.class);
                if(userLoginToken.required()){
                    //执行认证
                    //如果没有token,则代表当前状态为未登录
                    if(token==null){
                        throw new RuntimeException("无token,请重新登录");
                    }
                    //如果有token,则取出token中的id和pwd
                    int id;
                    String pwd;
                    try{
                        //解密token,取出第0个参数(即-存入的id)
                        id= Integer.parseInt(JWT.decode(token).getAudience().get(0));
                        System.out.println("id的值"+id);
                    }catch (JWTDecodeException j){
                        //若取出过程出错,则报一个错误
                        throw new RuntimeException("401");
                    }
                    //成功取出,则调用service层的通过用户名获取id的方法,判断得到的数据账号是否存在
                    String userPwd= admInfoService.byIdGetPwd(id);
    
                    if(userPwd.length()==0){
                        throw new RuntimeException("用户不存在,请重新登录");
                    }
                    //如果账号存在,此时验证密码,查看数据库中的密码是否和token中保存的密码一致
                    JWTVerifier jwtVerifier=JWT.require(Algorithm.HMAC256(userPwd)).build();
                    try {
                        jwtVerifier.verify(token);
                    }catch (JWTVerificationException e){
                        throw new RuntimeException("401");
                    }
                }else{
                    throw new RuntimeException("无认证方法无法访问");
                }
                return true;
            }
            return true;
        }
    }
    
    

    5.创建过滤类

    我们需要创建的token验证方法对所有的路径都进行生效,当用户访问每一个路径方法时都执行该方法,即使该路径方法上面有@PassToken注解,也需要进入该token验证方法中进行验证(但拥有@PassToken注解的方法进入后会很快被返回true,通过验证,具体见代码)。
    我们创建的拦截器配置类是继承了MVC中的“WebMvcConfigurer”类,实现重写了它的addInterceptors方法
    在这里插入图片描述
    在这里插入图片描述
    附上代码:

    package com.example.config;
    
    import com.example.interceptor.AuthenticationInterceptor;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    /**
     * 拦截器配置类
     */
    @Configuration
    public class interceptorConfig implements WebMvcConfigurer {
    
        /**
         * 设置拦截哪些路径,不拦截哪些路径
         * @param registry
         */
        @Override
        public void addInterceptors(InterceptorRegistry registry){
            registry.addInterceptor(authenticationInterceptor())
                    //添加拦截路径
                    .addPathPatterns("/**")
                    //添加白名单路径
                    .excludePathPatterns("/swagger-resources/**");
        }
    
        /**
         * 全局注入拦截器配置Bean
         * @return
         */
        @Bean
        public AuthenticationInterceptor authenticationInterceptor(){
            return new AuthenticationInterceptor();
        }
    }
    
    

    此时就会生效。我们回到Service层,在登录方法中调用工具类中“TokenUtil”方法,生成token令牌并传给前端。
    在这里插入图片描述
    附上Service类完整代码:

    package com.example.service;
    
    import com.example.entity.Admin;
    import com.example.entity.BaseEntity;
    import com.example.entity.CODE;
    import com.example.mapper.AdmInfoMapper;
    import com.example.util.TokenUtil;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class AdmInfoService {
        @Autowired
        private AdmInfoMapper admInfoMapper;
        @Autowired
        private TokenUtil tokenUtil;
    
        /**
         * 登录方法
         */
        public BaseEntity login(Admin admin){
            Admin admin1=admInfoMapper.login(admin);
            if(admin1==null){
                return new BaseEntity(CODE.ERROR,"账号不存在",null);
            }else{
                String token=tokenUtil.getToken(admin);
                return new BaseEntity(CODE.OK,"登录成功",token);
            }
        }
    
        /**
         * 修改用户名
         */
        public BaseEntity update(Admin admin){
            System.out.println("用户名"+admin.getUserName());
            if(admInfoMapper.update(admin)>0){
                return new BaseEntity(CODE.OK,"修改成功",null);
            }
            return new BaseEntity(CODE.ERROR,"修改失败",null);
        }
    
        /**
         * 通过id获取密码
         */
        public String byIdGetPwd(int id){
            return admInfoMapper.byIdGetPwd(id);
        }
    }
    
    

    最后来到controller类中,给需要验证token才能访问的方法前面加上(@UserLoginToken)注解,而不需要验证token就能够访问的方法前面也需要加上我们之前创建好的(@PassToken)注解,这样就完成了
    在这里插入图片描述

    6.Postman测试效果

    我们先测试登录方法,输入一个正确的id和pwd密码来登录。登录成功,获得生成的token令牌。
    在这里插入图片描述
    我这里是封装了一个返回类“BaseEntity”。这里的data就是返回的token令牌串。
    此时我们测试一下“通过id修改用户名”方法
    在这里插入图片描述
    我们看到这里并没有执行成功。返回到idea的控制台,我们就可以找到报错原因“无token,请重新登录”
    在这里插入图片描述
    这是因为我们的修改方法前面添加了“@UserLoginToken”注解,这个注解代表该方法需要在有token令牌且令牌正确的情况下“token验证类-AuthenticationInterceptor”才会放行,而我们在刚刚Postman的头部方法中并没有加上登录账号的token令牌,所以会报错。
    我们回到Postman中,在它的请求头方法中放入我们在“登录方法”里面得到的token令牌
    在这里插入图片描述
    此时再做访问测试
    在这里插入图片描述
    当访问到token验证类中时,它从请求头部分得到了token令牌的值,并对该值进行校验,校验通过,于是对该方法进行放行。这样一来就修改成功了。

    后话:

    这里主要是实现一下token效果,其实bug非常多,例如登录A账号获得的token可以去修改账号b的用户名,还有token令牌是固定不变了,不安全…
    当前能力有限,篇幅有限,就不做过多的解释了,等我哪一天强大了,再来删删改改!再见。

    获取该文章所有源码,请移步码云:
    https://gitee.com/Saltandlight/csdn-notes.git

    展开全文
  • 目的:了解cookie和session区别,并且了解app端为什么不用cookie、session,而用token。 一、了解cookie和session区别 我们在请求头中经常会见到如下部分: Cookie: ZC8sid=m5PMgK; AJSTAT_ok_pages=5; ...

    目的:了解cookie和session区别,并且了解app端为什么不用cookie、session,而用token。

     

    一、了解cookie和session区别

    我们在请求头中经常会见到如下的部分:

    Cookie: ZC8sid=m5PMgK; AJSTAT_ok_pages=5; AJSTAT_ok_times=1;ZC8cookietime=2592000;ZC8_auth=e558Bn9amQVa818V1epYBenUnNCUXW7vdUc3XZdMLRsVI26O40Bd5CqE%2F4Oj47WW245X04JeCjpyiUxBDwBpiJEfI0dxow;checkpm=1; supe_cookietime=2592000;supe_loginuser=wg101523413;supe_activationauth=9f6dNKMyRfxDJ82LeRptq1GkxzAzGTsCTAcF9B6DTI94uxzoK%2FOo2A

    在响应头中也经常看到set-cookie,那那么cookie是干嘛用的呢?和session的区别在哪儿呢?

    通过图解http书中两张图学习一下:

    Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

    从这两张图可以看出,cookie分为setCookie和Cookie,前者为响应头字段,后者为请求头字段;而请求头和响应头均包含Session ID,响应头包含的Session ID字段是为了记录用户认证状态,请求头中Session ID是方便服务端来判断客户端是否为真实的用户。接下来我们详细看下两者的区别:

    1.session在服务器端,cookie在客户端(浏览器)

    2.session默认被存在在服务器的一个文件里(不是内存)

    3.session的运行依赖session id,而session id 是存在cookie 中的,也就是说,如果浏览器禁用了cookie ,同时session 也会失效(但是可以通过其它方式实现,比如在 url 中传递 session_id)

    4.用户验证这种场合一般会用session

    因此,维持一个会话的核心就是客户端的唯一标识,即session id ;cookie目的可以跟踪会话,也可以保存用户喜好或者保存用户名密码;session用来跟踪会话。

    二、为什么app端不用cookie、session,而用token

    那么app中为什么很少看到用cookie或session,而要用token呢?这三者有什么区别呢?

    首先了解下REST,即Representational State Transfer的缩写。我对这个词组的翻译是"表现层状态转化"。 简单来说,RESTful API 是基于HTTP协议产生的一种相对简单的API设计方案,属于无状态传输。RESTful 的核心是 everything is a “resource”,所有的HTTP action,都应该是相应resource上可以被操作和处理的,而API 就是对资源的管理操作,而这个具体操作是由 HTTP action 指定的。

    App通常用restful API跟server打交道。Rest是stateless的,也就是app不需要像browser那样用cookie来保存session,因此用session token来标示自己就够了,session/state由API server的逻辑处理。

    如果你的后端不是stateless的rest API, 那么你可能需要在app里保存session,可以在app里嵌入webkit,用一个隐藏的browser来管理cookie session.

    session 和 oauth token 并不矛盾,作为身份认证token安全性比session好,因为每个请求都有签名sign(Sign怎么生成的:将所有用户请求的参数按照字母排序(包括timestamp,token),然后根据MD5加密(可以加点盐),生成sign签名,这就是所说的url签名算法。),所以token+sign还能防止监听以及重放攻击,而session就必须靠链路层来保障通讯安全了。

    参考资料:《图解HTTP》——[日]上野 宣



    作者:晓莫莫
    链接:https://www.jianshu.com/p/3246d5926bdb
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 一、前言:弱网环境带来问题、测试目的 弱网,即在地铁、隧道、电梯、车库等场景下使用APP,这种软网情况下,网络会出现延时、中断、超时等情况……所以,在弱网的测试条件下,要测试产品运行状态、处理机制...

    一、前言:弱网环境带来的问题、测试目的

    弱网,即在地铁、隧道、电梯、车库等场景下使用APP,这种软网的情况下,网络会出现延时、中断、超时等情况……所以,在弱网的测试条件下,要测试产品的运行状态、处理机制、提示信息、以及恢复网络后的连接等;比如:在网速很慢的情况下,我们希望看到的是先渲染出用户界面、而不是让用户先看到一片空白。

    弱网环境带来的问题:1.操作后,反应慢;2.用户体验差;3.出现bug的可能性会增加

    弱网测试的目的:弱网测试的目的是让APP在任何网络下都能表现自如,让开发了解弱网环境下,APP可预见的BUG;进而进行针对性优化;

    二、弱网的场景模拟

    我们需要模拟出至少3种情况:

    1.网络慢或延迟,导致加载时间长;

    2.网络中断,Web服务器返回500等状态码;

    3.网络超时,HTTP请求发出去后,很久都没有响应;

    三、弱网模拟、精确控制网速的方式

    1.Rules----》Performance----》Simulate Modem Speeds

    这种方式,是最为简单的弱网模拟方式,其限制的强度,就是FiddlerScript中基本的脚本写的那样;

    2.既然知道了其根本,就知道可以直接改FiddlerScript这段脚本的数据,使其弱网的强度更大;将延时的数字该大一点,就可以看到效果了……这就是精确控制网速

      if (m_SimulateModem) {
                // Delay sends by 300ms per KB uploaded.每上传1KB,延时0.3s
                oSession["request-trickle-delay"] = "300"; 
                // Delay receives by 150ms per KB downloaded.每下载1KB数据,延时0.15s
                oSession["response-trickle-delay"] = "150"; 
            }

    注意:修改了FiddlerScript这句脚本,保存之后,Rules----》Performance----》Simulate Modem Speeds会去掉勾选;所以你需要再次勾选这个

    四、综述上面弱网的效果(以qq浏览器访问www.baidu.com为例,看一下腾讯大哥在弱网下的提示)

    1.在弱网强度该高上传1kb延迟1.2s,下载1kb延时0.55s时,手机上qq浏览器的效果:

    2.再来看不同情况下,Fiddler抓包的情况,接口请求的时间

    五、如何在Fiddler上Session列表中添加time列

    在FiddlerScript中脚本中加上下面的方法,然后保存,然后重新打开Fiddler,即可!

      function BeginRequestTime(oS: Session)
        {
            if (oS.Timers != null)
            {
                return oS.Timers.ClientBeginRequest.ToString();     
            }
            return String.Empty;
        }
    
        public static BindUIColumn("Time Taken")
        function CalcTimingCol(oS: Session){
            var sResult = String.Empty;
            if ((oS.Timers.ServerDoneResponse > oS.Timers.ClientDoneRequest))
            {
                sResult = (oS.Timers.ServerDoneResponse - oS.Timers.ClientDoneRequest).ToString();
            }
            return sResult;
        }  

     

    展开全文
  • 因为这次的目的只是看看商城中有没有好玩的。暂且不对其进行信息收集。 对于商城类的,我习惯先去测试有没有xss、越权之类的。测试无果。 抓包发现一处ID 发现存在注入 进一步利用 发现了用户的数据库has_user ...
  • 最近公司启动了一个新项目,项目使用无状态连接方式所以使用了JWT来生成token,然后结合shiro做接口安全验证,由于拦截器会对需要token验证接口进行拦截,所以无法在swagger中测试接口作用,也就失去了...
  • 目录写在前面感想与目的调试方法使用天猫精灵开发平台提供在线测试工具手动输入链接与GET信息错误排查authorize.php不发生跳转,直接显示错误码链接发生了跳转,但是提示认证参数不全第一种情况第二种情况链接...
  • postman设置token为环境变量

    千次阅读 2019-08-09 14:35:17
    一、目录 目的说明 编写登录接口 ...在刚接触postman做接口测试的时候,本人是通过在浏览器请求登录的时候,按F12,点击network找到登录对应的链接URL,查看该URL的相应请求,从而将这里的token复...
  • 前言介绍 这段时间一个项目后端用的是...所以我们的目的在使用Postman通過XSRF的验证,以測試POST的請求。还是以laravel为例子,Laravel会返回到浏览器的GET请求时将XSRF-TOKEN写在Cookie中.因此我们需要从Cook...
  • CSRF即跨站请求伪造,说的简单点,实际上就是攻击者伪造一个表单数据的URL链接,让用户去点击,从而达到我们获取数据的目的,当然,不止是获取数据,修改我们想要的密码、新增个管理员账户、上传个木马等,能达到...
  • 对于一个项目,有人给了我这个我在Postman中用于测试目的的数据:在Postman中,这非常有效.我只需要取回访问令牌.有一次,我得到了访问令牌,我可以继续.我已经尝试了几个Python包和一些自定义代码,但不知怎,这个看似...
  • 点击蓝色“Python测试社区”关注我哟加个“星标”,欢迎来撩本文组织脉络如下Cookie 和 SessionHTTP 协议是一种无状态协议,即每次服务端接收到客户端请求时,都是一个全新请求,服务器并不知道客户端历史...
  • 在平时的测试工作中,经常需要将上一个接口的返回值作为下一个接口的入参,达到参数传递的目的 。今天我就介绍下如何利用 Httprunner 框架进行参数调用,以最常见的登录获取 token为例。 其实,我们要解决的问题...
  • 点击蓝色“Python测试社区”关注我哟加个“星标”,欢迎来撩本文组织脉络如下Cookie 和 SessionHTTP 协议是一种无状态协议,即每次服务端接收到客户端请求时,都是一个全新请求,服务器并不知道客户端历史...
  • 实验目的:使用Postman调用测试rest权限认证 随便找一个Controller先测试不用权限rest image.png 重新启动服务,用Postman测试 image.png ok,证明我们接口没问题了,那我们改写一些,把public...
  • CSRF即跨站请求伪造,说的简单点,实际上就是攻击者伪造一个表单数据的URL链接,让用户去点击,从而达到我们获取数据的目的,当然,不止是获取数据,修改我们想要的密码、新增个管理员账户、上传个木马等,能达到...
  • 目的测试系统支持最大并发登录用户数 完成后结构如下图所示: 二、实施步骤 1、公共部分请求 2、定义变量 3、参数化用户登录信息 4、添加登录请求 其中,参数中值value为参数化变量,来源于CSV Data Set ...
  • 目的 在安全模式下使用waterdrop连接tdcinceptor 二 测试版本 waterdrop 6.x tdc201下inceptor 三 安装waterdrop6.x waterdrop 6.x版本获取 在TDH6.xmanager8180inceptor组件界面上点击更多操作下载...
  • 该项目的目的是展示如何轻松地使用存储的内容(文本,图像,链接等)创建静态站点。 该项目配置为使用从特定管理区域中获取数据。 您可以在找到有关如何将DatoCMS与Gatsby集成的更多信息。 本网站使用: 作为包装...
  • python接口测试完善

    2020-08-05 18:12:36
    搭建接口测试框架,实现目的 1、监控正式环境接口 2、每次版本发布,跑一遍接口测试 3、钉钉群通知测试结果,发送测试报告到阿里邮箱 4、测试报告使用BeautifulReport,做了二次开发 5、用unittest框架 1、项目...
  • 使用jmeter进行登录接口测试 1.首先右键测试计划新建线程组,然后右键线程组新建http请求 ——根据下图,由于传参有中文,...4.右键登录,新建一个正则表达式提取器,目的是提取token 5.右键线程组,在Sampler里选择B
  • 这里给大家从基础开始讲解XSS概述XSS攻击是Web攻击中最常见的攻击方法之一,它是通过对网页注入可执行代码且成功地被浏览器 执行,达到攻击的目的。XSS的分类反射型XSS反射型也是最简单的一种,它的存在往往伴随着一...
  • 自定义Realm分为以下几步骤: 1、继承AuthorizingRealm,并实现其中重写方法:setName,...参数:AuthenticationToken登录构造usernamepasswordtoken 实现步骤如下: 1、构造usernamepasswordtoken 2、获取
  • 我用测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token 然后配置菜单事件,caidan.php <?php header(Content-type: text/html; charset=utf-8); define(ACCESS_TOKEN, 生成
  • 首先获取Access_Token接口:我用测试号,修改APPID和APPSECRET,然后浏览器访问上面这个Url即可生成Access_Token然后配置菜单事件,caidan.phpheader("Content-type: text/html; charset=utf-8");define(...
  • delog的目的是: 用于多项目/多软件包软件系统的集中式单个日志记录空间; 基于日志的测试控制器; 警告/错误通知者。 delog有以下客户: ; ; 。 使用将信息作为3D结构进行浏览。 分析 专案 探索日志源 ...
  • 首先获取access_token接口:我用测试号,修改appid和appsecret,然后浏览器访问上面这个url即可生成access_token然后配置菜单事件,caidan.phpheader("content-type: text/html; charset=utf-8");define(...
  • 此Cloudflare区域分析API脚本既支持传统Cloufdlare全局API令牌认证( CF_GLOBAL_TOKEN='y' ),也支持最新基于CF_GLOBAL_TOKEN='n'非全局基于Cloudflare权限API令牌认证( CF_GLOBAL_TOKEN='n' )。 出于测试...

空空如也

空空如也

1 2 3 4
收藏数 70
精华内容 28
关键字:

token测试的目的