🎉smart-http v1.3.4 发布,对国外非法请求 Say NO!
1、smart-http 简介
smart-http 是一款可编程式 HTTP 应用微内核。它是目前市面上为数不多即能严格准守 RFC2616 规范,又兼顾卓越性能的 Http 服务器。
smart-http 建立在自研的通信框架 smart-socket 之上,使其有着纯正的国产化血统。该项目对标的是 nginx,高性能、轻量化是其追求和坚持的目标。
模块介绍
模块 | 说明 | 代码量 |
---|---|---|
smart-http-common | 基础通用模块,包括枚举、日志、工具类 | 2300+ |
smart-http-client | HTTP Client 编解码和响应式编程设计 | 1400+ |
smart-http-server | HTTP Server 和 WebSocket 的编解码和应用层接口设计 | 2800+ |
smart-http-restful | 基于 smart-http-server 的简易版 MVC 模块(实验性) | 680 |
smart-http-restful-mybatis | 类似 mybatis-spring(实验性) | 25 |
smart-http-test | 单测模块 | 1600+ |
2、 版本更新
这是一个特别的版本,还是一个新的起点。
smart-http 一直以来都以「极简、易用、高性能」为设计理念,但凡跟这三点不相干的内容,我们从来不会去 care。
但是,随着近期观察到我部署在互联网上的服务频繁受到骚扰,让我意识到「安全」,也是 smart-http 应该去关注的方向。
以下是检测到来自世界各地的非正常访问:
-
来自美国的流量,访问不存在资源。
-
来自美国的流量,非正常 HTTP 报文
-
来自越南的流量。
-
来自荷兰的流量
除了非法请求,还有一些会长期占用 TCP 连接资源的情况。目前我的站点提供的只是一些简单的服务,此类流量还没有造成负面影响。但对于这种不礼貌的行径,我觉得作为一款专业的 http 服务,还是能够做一些事情的。
所以,我们决定在 smart-http 搭建一套 waf 的能力。主动防御一切非法请求,并给予以下反馈:
来自东方的神秘力量正在守护这片区域
这个版本主要搭建了 waf 的基础骨架,并实现了对于 Method、URI 的检测,后续我们再不断完善 waf 的检测规则和覆盖范围。
Maven
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-server</artifactId> <version>1.3.4</version> </dependency> <dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-client</artifactId> <version>1.3.4</version> </dependency>
本次更新内容:
-
restful 模块新增 commons-fileupload 的适配,提供文件上传的处理能力。
-
新增 waf 模块,提升 HTTP 服务安全性。
3、快速上手
3.1 HTTP 服务端
public class SimpleSmartHttp { public static void main(String[] args) { HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.httpHandler(new HttpServerHandler() { @Override public void handle(HttpRequest request, HttpResponse response) throws IOException { response.write("hello smart-http<br/>".getBytes()); } }).setPort(8080).start(); } }
3.2 WebSocket 服务端
public class WebSocketDemo { public static void main(String[] args) { //1. 实例化路由Handle WebSocketRouteHandler routeHandle = new WebSocketRouteHandler(); //2. 指定路由规则以及请求的处理实现 routeHandle.route("/", new WebSocketDefaultHandler() { @Override public void handleTextMessage(WebSocketRequest request, WebSocketResponse response, String data) { response.sendTextMessage("接受到客户端消息:" + data); } }); // 3. 启动服务 HttpBootstrap bootstrap = new HttpBootstrap(); bootstrap.webSocketHandler(routeHandle); bootstrap.start(); } }
3.3 Http 客户端
public class HttpGetDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("www.baidu.com", 80); httpClient.get("/").header().keepalive(false).done() .onSuccess(response -> System.out.println(response.body())) .onFailure(Throwable::printStackTrace) .done(); } }
3.4 Restful
<dependency> <groupId>org.smartboot.http</groupId> <artifactId>smart-http-restful</artifactId> <version>${smarthttp.version}</version> </dependency>
@Controller public class RestfulDemo { @RequestMapping(value = "/hello", method = RequestMethod.GET) public String helloworld() { return "hello world"; } public static void main(String[] args) throws Exception { RestfulBootstrap bootstrap = RestfulBootstrap.getInstance().controller(RestfulDemo.class); bootstrap.bootstrap().setPort(8080).start(); } }
smartboot 开源组织,一个容易被误认为是在 “重复造轮子” 的低调组织。曾获得 2020 年度 OSC 中国开源项目「优秀 Gitee 组织 」荣誉。
该组织内的明星项目包括:
smart-socket
历时 5 年精炼出 2 千多行代码,轻松实现百万级长连接的 AIO 通信框架。smart-http
基于 smart-socket 实现的 HTTP/1.1 web 服务。smart-servlet
基于 smart-http 实现的 Servlet 3.1 容器服务。smart-mqtt
基于 smart-socket 实现的 MQTT 3.1.1/5.0 Broker&Client 服务。smart-flow
一款具备可观测性的轻量级业务编排框架。组织地址:https://smartboot.tech/
代码仓库:https://gitee.com/smartboot

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Spring Batch 5.1 RC1
Spring Batch 5.1 发布了首个 RC 版本。 Spring Batch 是一个轻量级且功能全面的批处理框架,使用 Spring 和 Java 编写离线和批处理应用程序,旨在为开发对企业系统日常运行至关重要的批处理应用程序提供支持。 主要变化 更新入门指南 新增“两分钟上手教程”,其中包含创建 Spring Batch 项目并实现简单的"Hello world"任务的步骤指南。 当前基于 Spring Boot 的指南已更新到最新的 Spring Boot 3 版本,以展示如何使用 Spring Batch 5 中的新功能(例如支持 Java Records)。 改进示例 在此版本中,开发团队重新编写了示例套件中的所有代码示例。 这些示例现在按功能组织在单独的包中,以便用户更容易理解和掌握 Spring Batch 中的特定功能。主要的README文件包含一个表格,其中显示可用示例及其涵盖的功能。 详情:Spring Batch Samples 升级依赖 Spring Framework 6.1.0-RC1 Spring Integration 6.2.0-RC1 Spri...
- 下一篇
Apache Superset 3.0.1 发布,现代化数据工具
Apache Superset 3.0.1 现已发布。Apache Superset 是一款现代化的开源数据工具,用于数据探索和数据可视化。它提供了简单易用的无代码可视化构建器和声称是最先进的 SQL 编辑器,用户可以使用这些工具快速地构建数据仪表盘。 具体更新内容包括: Database Migrations #25320修复:为仪表板角色添加显式 ON DELETE CASCADE Fixes #25541fix:revert fix(sqllab):强制 trino 客户端异步执行(#24859) #25618修复:finestTemporalGrainFormatter #25599fix(window):localStorage 和 sessionStorage 不可用 #25579fix(Charts):设置最大行限制+删除使用空行限制值的选项 #25559fix(Presto):测试 Presto 视图时捕获 DatabaseError #25486修复:缩略图加载 - Talisman 默认配置 #25400fix(RLS):修复 RLS 模态上的信息工具提示 + 按钮...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Linux系统CentOS6、CentOS7手动修改IP地址
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Hadoop3单机部署,实现最简伪集群
- CentOS6,7,8上安装Nginx,支持https2.0的开启