NGINX拦截异常请求方法
139 次浏览
发表于 2022-08-15 09:43

众所周知,HTTP常见的请求方法有: GET、POST、HEAD 等,在目前的Restful API规范中,定义了以下HTTP动词:
HTTP动词
含义
GET
从服务器取出资源
POST
在服务器新建资源
PUT
在服务器更新资源(全部)
PATCH
在服务器更新资源(部分)
DELETE
从服务器删除资源

当然,开发者也可以自定义HTTP动词。

然而,在某一天翻阅日志的时候发现了以下情况:(如图),出现了许多以 \x12\x01 开头的请求,而我的前端和API根本不会发出这样的请求,而我的服务器也无法处理这些请求方法。虽然请求量占比极少(甚至<0.01%),但是出于强烈的好奇心和本着安全第一的原则,还是想一探究竟。


0


我们的日志系统基于ELK,通过类似简单的语句可以筛选出非正常 request_method :
看到日志如下(其中一条):

0

这是一条来自英国的非法请求,大概率是黑客在扫描应用程序漏洞。在筛选对比所有类似日志后,发现这些请求全部都是无效请求。

既然是这样,我们决定在NG上实施拦截异常HTTP请求方法,避免这类请求流到后端服务器上,保护后端服务器安全!

我们在对应服务的nginx conf 中添加如下代码,将异常HTTP动词拦截

    # 判断非法http动词
if ($request_method !~* ^GET|POST|PUT|PATCH|DELETE|HEAD&) {
# 进行拦截,这里返回500错误,也可以通过其他方法拦截
return 500;
}


后记:
由于 Restful API 规范不断更新,以及一些特殊的应用程序会有自定义的 request_method ,所以规则需要实时调整。



如果您觉得不错,就打赏支持一下吧〜
已有 0 人进行打赏
点击标签,发现更多精彩
发表评论
发表者

逸涵Topzyh

暂无个人介绍

  • 1

    文章

  • 0

    关注

  • 0

    粉丝

活动推荐
Copyright 公安部网络安全保卫局 All Rights Reserved
京公网安备 11010502047880号    京ICP备05070602号