Skip to content

Files

Latest commit

 

History

History
126 lines (100 loc) · 4.21 KB

README_CN.md

File metadata and controls

126 lines (100 loc) · 4.21 KB

基于Java8 + Spring Boot 创建的 Http Request 拦截和校验框架😋

花费 10 分钟 来学习用它做点东西,他能帮你检查并校验你的Http请求的参数.

它能防御重放攻击, 检查 参数是否被修改(数字签名), 校验 请求是否超时

🐾 快速开始 | 🌚 🇨🇳 简体中文


Aegis 是啥?

Aegis 是一个追求简洁的框架, 所以使用了最新的技术, 能够拦截每一个http请求, 然后检查其中的参数, 并且你能修改每个校验策略. 如果你觉得这个框架不错,能够给我一个赞 star来支持我:blush:

快速开始

使用Maven创建一个基础的Maven项目,然后添加依赖:

<dependency>
    <groupId>com.github.com.erictao2</groupId>
    <artifactId>aegis-api</artifactId>
    <version>1.0.1</version>
</dependency>

你必须使用Spring Boot 来构建你的项目.

然后添加注解到你的ControllerMethod上,请参考后续文档查看每个注解的作用!

框架文档

Aegis 注解

现在Aegis有三个注解可以使用。

DefendModify

这个注解能帮助你校验request里参数的数字签名,如果有人篡改过你的request参数,Aegtis将会拦截下该请求。附上代码:

@RestController
// 你也可以把注解用到Controller的类上,这样就是针对类的所有方法起作用
//@DefendModify
public class DemoController {

    @GetMapping("/1")
    //@DefendModify(name ="reqSign", algorithm = "md5", key = "aegis-key")
    @DefendModify
    public String test1(){
        return "test1-demo" ;
    }
}

你的请求 URL 必须像这样: http://localhost:8080/1?parameterOne=oneoneone&reqSign=f4da2ed1dca4bfd481d83cfb89f12ab6 或者在Request Body里包含JSON格式的这些参数

URL里 reqSign = (是用算法加密所有其他参数得出的结果, 默认是MD5加密 )

DefendTimeout

这个注解能够帮你检查请求是否超时:

@RestController
// You also can use annotation in Controller class
//@DefendTimeout
public class DemoController {

    @GetMapping("/2")
    //@DefendTimeout(name ="timestamp", timeout = 1000, timeUnit = {TimeUnit.MILLISECONDS})
    @DefendTimeout
    public String test2(){
        return "test2-demo" ;
    }
}

你的请求 URL 必须像这样: http://localhost:8080/2?timestamp=1550653175000 或者在Request Body里包含JSON格式的这些参数

DefendReplay

这个注解能帮你防御重放攻击:

@RestController
// You also can use annotation in Controller class
//@DefendReplay
public class DemoController {
    @GetMapping("/3")
    //@DefendReplay(name = "reqNo", prefix = "aegisReqNo", timeout = 1000 , timeUnit = {TimeUnit.MILLISECONDS})
    @DefendReplay
    public String test3(){
        return "test3-demo" ;
    }


}

你的请求 URL 必须像这样: http://localhost:8080/3?reqNo=ds1&timestamp=1533205566000 或者在Request Body里包含JSON格式的这些参数

当你发出一个请求时,如果该请求的reqNo和之前某个请求的reqNo相同,且两个请求的时间(timestamp)之差,没有超过设定的时间(timeout),那么这个请求将会被拦截掉。

Contact

Licenses

Please see Apache License