gpt4 book ai didi

java - 如果用户尝试使用无效的用户名和密码登录超过 3 次,如何将用户转发到 "resetPassword"页面(STRUTS2)

转载 作者:行者123 更新时间:2023-12-02 00:05:06 26 4
gpt4 key购买 nike

我想实现:

如果用户尝试使用无效的用户名和密码登录超过 3 次。我想将它们转发到我的“重置密码页面”。

这背后的逻辑是什么?我无法理解这个问题的确切逻辑。请帮忙。

我想申请什么: 从表单文本字段传递默认值作为 Login_attempt=1 从我的表单,

//geter & setter of loginAttempt
if(loginAttempt>3)
{
return resetPassword;//forwarding to resetPassword.jsp from my struts.xml
}
else
{
//perform other tasks
}

但是根据我的上述逻辑,我有疑问:如何在每次提交表单时增加 loginAttempt 值。这样我上面的代码就可以为我工作。

如果您有任何其他逻辑要实现。请与我分享。

最佳答案

按照你的意愿这样做会成为一个安全漏洞,因为尝试次数将成为 html 的一部分,所以任何人都可以更改它(你不需要特殊的工具,你可以使用 chrome 开发工具来做到这一点) )。因此,考虑到这一点,一些恶意用户可能会制作一个程序来无限次尝试暴力攻击。

要避免此安全漏洞,您可以使用以下方法之一:

  • 存储 session 中的尝试次数。在我看来,鉴于您使用 Struts2 作为框架,这是最简单的方法。要在 Struts2 Action 中获取 session ,您应该实现 SessionAware界面。另外,不要忘记在用户成功登录后重置尝试的值。

  • 一些开发人员不喜欢使用 session ,因此他们使用数据库。就性能而言,这是比 session 更好的方法,特别是如果您的网站拥有大量用户。

  • 另一种选择是使用 cookie,甚至是表单中的隐藏参数,但对其信息进行加密(例如第一个选项是 Ruby on Rails 框架的方法)。

最佳选择取决于您的项目要求。在我看来,除非您使用某些支持它的框架或工具,否则您不应该使用最后一个选项。

要在其他两个选项之间进行选择,一个好的指标是您期望网站拥有的用户数量(如果您的用户数量很少或者您正在创建私有(private)网站,则 session 可能是更好的方法。数据库始终是很好,但所需的开发时间通常更长,并且可能对可维护性危害更大)。

当然还有很多解决方案,但我认为我已经介绍了最常见的解决方案。

关于java - 如果用户尝试使用无效的用户名和密码登录超过 3 次,如何将用户转发到 "resetPassword"页面(STRUTS2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com