【发布时间】:2016-03-13 03:20:00
【问题描述】:
我想听听您对以下方面的建议:
我在 Tomcat 上使用 jsp 有 web-application,用户在输入登录名和密码后(两者都是自动定义的,在创建帐户后不会更改)能够进入他们的个人页面。
我想在具有用户登录 ID 的服务器上使用 ArrayList 对用户帐户进行一些保护,其中某些登录 ID 的未成功登录数量将被保留(会有线程制作金额值一段时间后为零)。
如果金额大于某个定义的值 - 阻止登录(直到清除金额)并发送给用户电子邮件链接,点击后服务器内部的金额值将设置为 0。我会努力解决这个问题,但我的问题是这种方法是否正确,这样的ArrayList 将满足需求:
List<User> users = Collections.synchronizedList(userList);
并使用同步的set 和get 方法访问它。
目的是防止暴力攻击(手动甚至服务器驱动)。
有没有办法防御访问攻击(在短时间内进行多次登录尝试)?
提前致谢。
【问题讨论】:
-
@nfechner 这是可能的,谢谢你的想法。但我也在寻找其他解决方案。
-
使用
synchronized不会为您提供任何程度的针对暴力攻击的保护。完全没有。因为那甚至没有任何意义。您需要将 HTTP 请求/秒/IP 限制在合理的数量 - 如果达到阈值,则停止返回数据。这与重新验证码相结合将在一定程度上保护您的网页 -
@specializt
synchronized是必需的,因为会从List<User> users读取数据并在那里添加新值。