【发布时间】:2013-01-27 14:13:02
【问题描述】:
我正在寻找 Apache Web 服务器的替代安全注意事项。我通常使用 PHP 和 MySQL。
对于用户登录等进程,我将 IP 地址、尝试次数和上次尝试时间保存在数据库中,因此如果有人在过去 n 分钟或秒内尝试超过 x 次,我只需阻止 IP 地址。
当有很多不同的过程(例如用户登录)时,将 IP 地址保留在数据库中听起来并不正确(因为会降低性能并且要做很多事情)。我知道如果你想要安全,你需要牺牲一些性能,但是有没有更好的方法来阻止用户发出过多的请求?也许是 Apache 的一个模块?还是对服务器的较低级别的警告?我特别想避免不必要的数据库工作。
我考虑过使用 CAPTCHA,但将它用于每个表单都会扼杀用户体验。在 n 分钟内发出 x 个请求后使用它仍然需要我提到的第一种技术。
缓存系统可能会有所帮助,但我看不出它如何防止暴力攻击或用垃圾填充数据库。 AFAIK 它只有助于从数据库中读取(如果我错了,请纠正我)。
【问题讨论】:
-
如果您只保留过去一小时内 IP 的数据库记录,则对性能几乎没有影响。
-
评论比答案更好的解决方案...
-
我删除了dos,部分原因是您不是在谈论 DoS 本身,还因为标签是针对磁盘操作系统的 :) 同样如前所述,DB Logging 可能是正确的解决方案。作为针对实际 DoS 的解决方案,它会失败,因为 Apache 进程仍会启动以开始处理请求,但稍后会被杀死......这仍然会使您的服务器过载。