发送短信验证码没有判断图形验证码是否正确,被攻击,临时用nginx限制ip访问

本文介绍了一个注册页面因未验证图形验证码导致遭受攻击的情况,并详细解释了如何通过Nginx配置来阻止恶意IP访问,包括如何获取用户的真实IP及设置IP黑名单。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,注册页面上发送短信验证码没有判断图形验证码是否正确,就发送验证码了,结果被攻击了,nginx的access.log看到访问的ip,并将访问过多的ip选择出来,临时用nginx限制ip访问。后面修改代码,重新发版。

但是,对于套了一层 CDN 或代理的网站,通过 iptables 、 Nginx 的 deny 指令或者是程序来 控制掉这些恶意请求,这些方法可能就失效了。

 

1拿到用户真实 IP,只要在 Nginx 的 http 模块内加入如下配置:

1

2

3

4

5

#获取用户真实IP,并赋值给变量$clientRealIP

map $http_x_forwarded_for  $clientRealIp {

        ""      $remote_addr;

        ~^(?P<firstAddr>[0-9\.]+),?.*$  $firstAddr;

}

 

2通过对 $clientRealIP 这个变量的判断,Nginx 就能实现隔山打牛的目的,而且规则简单易懂:

Shell

1

2

3

4

5

6

7

8

#如果真实IP为 121.42.0.18、121.42.0.19,那么返回403

if ($clientRealIp ~* "121.42.0.18|121.42.0.19") {

        #如果你的nginx安装了echo模块,还能如下输出语言,狠狠的发泄你的不满(但不兼容返回403,试试200吧)!

        #add_header Content-Type text/plain;

        #echo "son of a bitch,you mother fucker,go fuck yourself!";

        return 403;

        break;

}

把这个保存为 deny_ip.conf ,上传到 Nginx 的 conf 文件夹,然后在要生效的网站 server 模块中引入这个配置文件,并 Reload 重载 Nginx 即可生效:

1

2

#禁止某些用户访问

include deny_ip.conf;

如果再想添加其他要禁止的 IP,只需要编辑这个文件,插入要禁止的 IP,使用分隔符 | 隔开即可,记得每次修改都需要 reload 重载 Nginx 才能生效。

 

 

 

参考资料:网站使用CDN之后禁止用户真实IP访问的方法

深圳逆时针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值