当前位置:  开发笔记 > 编程语言 > 正文

如何在Java webapp中限制登录尝试?

如何解决《如何在Javawebapp中限制登录尝试?》经验,为你挑选了1个好方法。

我想实现一种有效的机制来限制我的Java Web应用程序中的登录尝试,以防止对用户帐户的暴力攻击.

杰夫解释了为什么,但不是如何.

Simon Willison 在Python中为Django展示了一个实现:这并没有真正帮助我,因为我不能使用memcached和Django.

从头开始移植他的想法似乎也不是很好 - 我不想重新发明轮子.

我发现了一个Java实现,虽然它似乎相当简单:它只是在15分钟后清除所有条目而不是LRU缓存.

EHCache可能是memcached的替代品,但我没有任何经验,如果有更好的替代方案,我不想真正引入另一种技术.

那么,什么是在Java中实现登录限制的好方法?



1> Loki..:

我想即使是EHCache也会用凝固汽油弹炸死一只苍蝇.问题很简单,实施也是如此.

我建议在顶层使用servlet过滤器,以便尽可能少地进行处理.

创建一个类来存储以下内容:

尝试次数(次数)

时间

现在,代码在sunchronized块中很简单:

if userid not in attemptMap:
    attemptMap.add ( userid, new attemptItem ( userid, 1, now ) )
else
    tmp = attemptMap.get ( userid )
    if (acquire lock for tmp) :
      if tmp.time + 30 > now :
          tmp.count = 0
          tmp.time = now
      tmp.count++
      if tmp.count > 3 :
          error=true
      release lock for tmp
    else : error=true

这就是人(只要代码是同步的).


@Jorn,他给你伪代码,这对你来说不够好?
推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有