PHP / MysqL的/阿帕奇.
解决方法 防止蛮力开裂比最初看起来更棘手.解决方案是组合控制 – 一个控件不会切割芥末.并记住目标:你想要将蛮力攻击放慢到无效的程度,或者你可以检测它并采取行动.第二种选择通常比首先更有效.您可以使用验证码(这是目前流行的技术),但验证码通常可以自动读取,当计算机无法读取时,可以通过支付低薪工人或使用验证码来获得人口农场保护“免费”色情片(两种技术都被使用过).
其他人在表格中使用秘密价值的建议并不会有所帮助;攻击者只需解析HTML即可找到秘密值,并将其包含在帖子中.这对于自动化来说非常简单,所以它并不是一个很好的防御.哦,如果价值变得容易预测(使用可怜的或破损的PRNG或坏种子),那么你再次上了小河.
跟踪IP地址是可以的,但前提是您@R_301_6963@NAT.使用NAT,有效用户看起来是重复的.请记住,攻击者可以冒充其他系统;单个攻击系统可以使用其他IP地址,甚至拦截到该系统的流量(ARP中毒是一个很好的机制).
您可以在给定的时间段内使用最大失败超时数(例如1小时内的3).这会减慢攻击者的速度,但不一定会阻止他们.您可能包含自动解锁,但您需要进行一些数学计算,并确保解锁时间确实有用.
指数退避是另一种有用的机制.这可能与会话(攻击者不必返回服务器)绑定到IP地址(使用NAT中断)或帐户(不考虑跨多个帐户的暴力强制) .
要使其他防御变得有用,您必须拥有强密码.如果您的密码很容易猜到(它们是否在字典中?它们是否很短?它们是否复杂?)攻击将成功.实现最小密码强度要求和“非法密码”字典(结合该字典的常见字符替换)是个好主意.或者,您可以使用OATH,证书登录或硬件令牌(如RSA的SecurID)等系统.
我认为是Burt Kaliski讨论了客户难题.基本上,您为客户提供了一个对服务器来说很容易的挑战,但对客户来说很难;客户自己通过浪费自己的资源试图解决难题.这里的困难在于确定拼图的正确复杂性.例如,它可能是一个很大的因素.不管它是什么,你必须假设最有效的算法,你必须能够处理不同机器上不同浏览器的不同性能(可能很慢),同时减慢浏览器之外的自动攻击(可能比你的JavaScript).我是否提到您必须在JavaScript中实现解决方案?
但是你仍然坚持使用跨多个帐户的攻击.除非您可以跟踪IP地址,否则我不知道任何公开使用的控件都可以正常使用.
然后,您将要保护用户名.不知道用户名的攻击者(要求系统不指示用户名何时有效)必须同时学习用户名和密码,而不是轻易确认用户名,然后只攻击密码.
并且您需要注意错误消息和服务器计时也不会泄露(有效)密码.
当您处理错误消息时,请确保密码恢复机制不会给出任何消息.即使在其他方面也不错的系统中,密码恢复可能会破坏整个系统
但是,所有这一切,攻击最终取决于服务器的性能.您可能只是实现了一种非常慢的身份验证机制(对于有效和无效的身份验证都必须很慢).保证在线攻击的速度不会超过服务器处理请求的速度.
然后,您需要检测暴力攻击,因此您的系统需要良好的审计跟踪.但是,您需要注意不要记录太多的日志消息,否则您将通过填充磁盘空间来打开一种简单的方法来对服务器进行 *** 作.像syslog这样的“前一条消息已被收到1000次”的消息会很好.
一旦你完成了所有的设计工作,并且当你完成了实现工作时,你将需要检查整个系统,以及系统的所有功能,在给定当前设置和服务器性能的情况下对其进行数学建模并确定攻击者暴力攻击的平均时间(a)单个帐户,以及(b)任何帐户(强制跨帐户以避免帐户特定控制).
总结以上是内存溢出为你收集整理的web – 防止登录请求泛滥的简单方法?全部内容,希望文章能够帮你解决web – 防止登录请求泛滥的简单方法?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)