当前位置:首页 > 运维笔记 > 正文内容

PHP 如何防止登录API被暴力破解?

Scar2020-12-12运维笔记156
$_SERVER['HTTP_X_FORWARDED_FOR']        
    || $_SERVER['HTTP_X_FORWARDED']        
    || $_SERVER['HTTP_FORWARDED_FOR']        
    || $_SERVER['HTTP_CLIENT_IP']        
    || $_SERVER['HTTP_VIA']        
    || in_array($_SERVER['REMOTE_PORT'], array(8080,80,6588,8000,3128,553,554)))        
    || @fsockopen($_SERVER['REMOTE_ADDR'], 80, $errno, $errstr, 30))     
{              
echo "你丫歇菜吧!";     
}

第一,如果是开发API建议加入【访问频率】设置。例如,如果设置频率限制为每分钟1000次(可以是某个端口,每个ip等等),如果一分钟内超过这个限制,那么服务器就会返回 429: Too Many Attempts.响应。 第二,关于伪造IP地址的防范。你可以发送请求到对方ip地址,伪造的ip地址没有任何response,其次,如果在PHP里面$_SERVER['REMOTE_ADDR']是没有办法被伪造的,除非用代理,但是PHP一样可以检测代理,然后结合IP地址可防范泛洪攻击。  访问频率限制建议插件:https://github.com/GrahamCampbell/Laravel-Throttle


目前我遇到了一个问题,我正在做一套用户登录的api,将来这套api是给pc和app上共同使用的,那么问题来了,如何防止api被暴力破解?如果对方只使用一个账号进行密码匹配还好,我可以记录账号的登录次数,超过了一定次数就将该账号冻结,但是问题来了:假如我拿到600W账号+密码,一次遍历输入,很有可能就撞到一个匹配的账户,限制ip也不可靠,因为伪造ip实在太简单,那么该怎么解决这个问题呢?
如果每次都设置验证码,用户体验太差,验证码被机器识别也只是时间问题,不知道大家怎么解决的?

6.4更新:我其实一直想的是,如果可以拿到机器的唯一标识,类似mac地址的东西最好,这样就可以避免攻击者在一台机器上刷api,无论他不停换ip换账号都没用,可惜拿不到,于是就想问问大厂们是怎么解决的。


扫描二维码推送至手机访问。

版权声明:本文由小卡博客发布,如需转载请注明出处。

本页地址:https://www.2wxk.com/post/35.html

分享给朋友:

相关文章

WHMCS Nginx 伪静态 7.8 友好URL配置

WHMCS Nginx 伪静态 7.8 友好URL配置

大家在使用WHMCS系统中会发现后台有一个友好的 URL功能可以进行配置,也就是我们通常来说的伪静态规则。我们为什么要添加SEO友好URL呢?答:友好的URL既对用户来说看起来不错,更易于记忆,还可以...

WHMCS 管理员登录页卡慢

WHMCS 管理员登录页卡慢

今天登录了一下管理员后台,发现巨卡无比看了一下代码,原来如此,是字体文件所在的服务器凉了那咱就把它注释掉吧(删了也可以)进入 你的网站/admin/templates,编辑 login.tpl 文件大...

宝塔8.23最新pma重大漏洞自查教程

宝塔在今天曝出一个很严重的漏洞,至于是什么我就不用多说了,听说有gov网站也惨遭毒手,堪称今年最大网络安全事故。 先上解决方案:安全组关闭888端口,或升级面板 自查教程如下:‘pma’连接日志格...

宝塔API一键安装智简魔方财务

宝塔API一键安装智简魔方财务

第一步:开启宝塔API接口:面板设置->API接口->开启,记住接口密钥,白名单IP写127.0.0.1第二步:建个站点,网站->新建,数据库和ftp可以不建第三步:点击网站根目录第...

使用CentOS+宝塔申请SSL泛域名证书

使用CentOS+宝塔申请SSL泛域名证书

现今时代拥有一个SSL证书已经是不可缺少的了,但是单域名证书申请起来还麻烦 有没有办法可以申请SSL泛域名证书来解决这个问题呢?教程所需一台云服务器 ,一个域名准备环境先安装宝塔面板yum ...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。