0
点赞
收藏
分享

微信扫一扫

unity内存优化之AB包篇(微信小游戏)

以前干嘛去了 2024-03-17 阅读 7
Web安全

目录

SpringBoot-身份鉴权-JWT技术

SpringBoot-打包部署-JAR&WAR

思维导图


SpringBoot-身份鉴权-JWT技术

创建项目引入依赖

引入依赖:

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.4.0</version>
</dependency>

项目目录如下:

创建JWT并配置JWT,对应目录下创建JwtController.java

package cn.xiaodi.testjwt.demos.web;

import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody;


@Controller
public class JwtController {
    //模拟用户的jwt身份创建 数据的jwt加密

    @PostMapping("/jwtcreate")
    @ResponseBody
    public static String main(Integer id,String user,String pass) {
        String jwttoken = JWT.create()
                //设置创建的header部分
                //.withHeader()

                //设置创建的payload部分
                .withClaim("userid", id)
                .withClaim("username", user)
                .withClaim("password", pass)
                //设置时效(JWT过期时间)
                //.withExpiresAt()

                //创建设置的signature部分 算法和密匙
                .sign(Algorithm.HMAC256("xiaodisec"));

        System.out.println(jwttoken);
        return jwttoken;
    }


    //模拟JWT身份的检测 jwt数据解密

    @PostMapping("/jwtcheck")
    @ResponseBody
    public static String  jwtcheck(String jwtdata){
        //String jwtdata="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwYXNzd29yZCI6ImExMjM0NTYiLCJ1c2VyaWQiOjEsInVzZXJuYW1lIjoiYWRtaW4ifQ.nkMIxHJKyGAHa3aDtTAy5_9j51yWDTQHEL8n-dqE33w";

        //构建解密注册
        JWTVerifier jwt = JWT.require(Algorithm.HMAC256("xiaodisec")).build();

        //解密注册数据
        DecodedJWT verify = jwt.verify(jwtdata);

        //提取注册解密数据 payload部分
        Integer userid = verify.getClaim("userid").asInt();
        String username=verify.getClaim("username").asString();
        String password=verify.getClaim("password").asString();

        System.out.println(userid+username+password);
        return "admin page";


//        if(username.equals("admin")){
//            return "admin";
//        }else {
//            return "gay?";
//        }


        //攻击者要模拟使用xiaodi用户去登录




        //提取header部分
        //verify.getHeader();
        //提取sign签名部分
        //verify.getSignature();



    }

}

配置前端提交数据访问客户端页面,在resources→static→index.html创建如下的前端页面

<html>
<body>
<h1>hello word!!!</h1>
<p>this is a html page</p>

<form action="../jwtcreate" method="post">
    id:<input type="text" name="id"><br>
    user:<input type="text" name="user"><br>
    pass:<input type="text" name="pass"><br>
    <input type="submit" value="create">
</form>

<form action="../jwtcheck" method="post">
    jwtdata:<input type="text" name="jwtdata"><br>
    <input type="submit" value="check">
</form>

</body>
</html>

对应输入id,用户名,密码,点击创建得到token

在官网进行解密,在页面对应输入对应jwtdata,进行解密

跳转至解密成功页面,回显admin page

 

SpringBoot-打包部署-JAR&WAR

思维导图

举报

相关推荐

0 条评论