我正在为新项目的登录部分工作,这肯定需要用户身份验证。
我认为最简单的方法是使用http基本身份验证。我在Apache服务器上实现了很好,ssl也被认为可以提供更好的安全性。
然而,有一点让我担心,无论用户多少次无法提供有效的用户名/密码信息,基本身份验证似乎都不会停止。它会一直在问......
我估计,因为每次Web服务器收到凭据时,都需要通过密码文件来查找是否存在匹配,它需要一定量的服务器资源。我的问题是,这是恶意用户遭受DoS攻击的安全风险吗?
如果是这样,我怎么能阻止这个?通过在Apache上添加一些配置/功能?或者只是换成其他一些身份验证方法?摘要认证?
非常感谢提前的建议。
答案 0 :(得分:2)
自己处理http身份验证,根据ip地址(在给定时间内)计算登录量,如果达到限制则返回401.
mod_perl 2.0:http://perl.apache.org/docs/2.0/user/handlers/http.html#toc_PerlAuthenHandler
mod_php:http://no.php.net/manual/en/features.http-auth.php
mod_python:http://www.modpython.org/live/mod_python-3.2.8/doc-html/tut-more-complicated.html
答案 1 :(得分:1)
第1步:阅读:http://en.wikipedia.org/wiki/Denial-of-service_attack#Prevention_and_response
第2步:实现这一点。创建一组由IP地址索引的计数器。来自IP地址的每次故障都会增加计数器。计数器是睡眠时间 - 以秒为单位。 10次失败尝试意味着401响应10秒。