首页 > 编程知识 正文

请求如何避免恶意攻击人,如何应对别人的恶意攻击

时间:2023-05-04 22:57:15 阅读:250180 作者:3078

1.nginx限制客户端请求频率,防止恶意攻击

模块: ngx_http_limit_req_module

作用: 限制客户端请求频率,防止恶意攻击

配置示例:

http { limit_req_zone $binary_remote_addr zone=req_perip:50m rate=10r/s; ... server { ... location /api/ { limit_req zone=req_perip burst=50 nodelay; limit_req_status 503; } }}

说明: 区域名称为req_perip,分配内存大小为50m(如果限制域的存储空间耗尽了,对于后续所有请求,服务器都会返回 503),同一个ip平均处理的请求频率不能超过每秒10次; 如果超过每秒10次但超过的请求数量小于等于50(burst)时,会延迟请求。如果超过每秒10次的请求数超过50,则立即返回503给客户端

涉及指令:

  limit_req_zone

  limit_req

  limit_req_status 

  limit_req_log_level 

指令详解: limit_req_zone(可理解为该指令用来定义限制请求频率) 语法: limit_req_zone key zone=name:size rate=rate;可配置区域: httpkey: 必选项;取值范围: 1,text(文本); 2,nginx变量;3,text和nginx变量的组合; 注: 1.7.6版本之前取值只能是nginx变量name: 必选项;自定义字符串size: 必选项;分配内存大小,用来保存键值的状态参数rate: 必选项;每秒可请求的频率(r/s), 或每分钟可请求的频率(r/m)

  

limit_req (可理解为使用定义的限制请求频率,一定是先定义后使用!也就是一定要有limit_req_zone指令的配置后才能使用该配置)语法: limit_req zone=name [burst=number] [nodelay];可配置区域: http, server, locationname: 必选项;自定义字符串, 名字必须与limit_req_zone中zone=name这个名字一致number: 必选项;正整数数字, 平均每秒允许不超过limit_req_zone指令中rate规定的请求数,并且不会超过该值所指定数量的请求, 可延迟请求的数量 nodelay: 可选配置, 表示请求频率超过rate规定值后又超过burst规定值后立即返回客户端503(可设置返回code)

  

limit_req_status 语法: limit_req_status code;默认值: 503可配置区域: http, server, location表示超出limit_req配置的请求数量后返回给客户端的错误码使用该指令最低版本 1.3.15

  

limit_req_log_level语法: limit_req_log_level info | notice | warn | error;默认值: limit_req_log_level error;可配置区域: http, server, location当服务器拒绝处理由于速率超过或延迟请求处理而拒绝处理请求时,设置所需的日志记录级别。最低版本: 0.8.18  

常见错误:

  nginx: [emerg] zero size shared memory zone "oneip"

   出现此错误都是因为在未指定limit_req_zone指定就使用了limit_req指令的原因(或者limit_req中的name值和limit_req_zone中定义的name值不一致) 

2. 项目中使用过滤器或者拦截器进行访问限制

 a.对于异常用户

切面处理异常,把异常用户的ip插入到数据库,当用户的请求异常次数到达一定程度时,拉入很名单

   每次请求去查询是否在黑名单中

b.对于一分钟请求次数,接口限制

   每次请求判断上次是否在一分钟内,如果在一分钟内则+1次

              如果超过一分钟则清0

如果一分钟请求超过一定次数,就会直接限制请求,24小时候定时解绑

 3.防止csrf攻击

https://www.cnblogs.com/volcano-liu/p/11188748.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。