PHP怎么防止被攻击,php – 防止暴力攻击的最好方法是什么?

本文探讨了传统验证码和cookie依赖的登录系统的不安全性,并提出了一个更可靠的方法——使用上下文相关问题来防止机器人破解。通过询问页面特定信息,如第六段第四个字或作者名字,可以增加机器解决的难度。此外,建议实施登录失败限制策略,例如每10分钟最多允许3次失败尝试,以防止暴力破解。这种方法结合了智能问题和登录锁定,为网站提供了额外的安全保障。
摘要由CSDN通过智能技术生成

会议是不可靠的,因为他们依靠cookies,CAPTCHA经常被破坏[包括ReCAPTCHA]。唯一可靠的方法是欺骗性的简单:提出一个问题。不要使用数学问题,因为计算机出于某些原因令人惊奇地擅长解决这些问题。伟大的老同志是这样的:

> this page第六段第四个字是什么?

>这个网站作者的名字是什么? [hint]

这很容易实现,而且机器很难解决。

至于fore-forcing,请尝试向用户表添加两个字段’first_failed_login'[INTEGER unix timestamp或DATETIME]和’failed_login_count’。 [整数]

$bad_login_limit = 3;

$lockout_time = 600;

$first_failed_login, failed_login_count; // retrieve from DB

if(

($failed_login_count >= $bad_login_limit)

&&

(time() - $first_failed_login < $lockout_time)

) {

echo "You are currently locked out.";

exit; // or return, or whatever.

} else if( /* login is invalid */ ) {

if( time() - $first_failed_login > $lockout_time ) {

// first unsuccessful login since $lockout_time on the last one expired

$first_failed_login = time(); // commit to DB

$failed_login_count = 1; // commit to db

} else {

$failed_login_count++; // commit to db.

}

exit; // or return, or whatever.

} else {

// user is not currently locked out, and the login is valid.

// do stuff

}

这将使您的登录系统每10分钟仅识别每个用户的3次登录尝试次数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值