Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建用户帐户时记录暴力攻击的正确方法_Java_Algorithm_Security_Design Patterns_Application Security - Fatal编程技术网

Java 创建用户帐户时记录暴力攻击的正确方法

Java 创建用户帐户时记录暴力攻击的正确方法,java,algorithm,security,design-patterns,application-security,Java,Algorithm,Security,Design Patterns,Application Security,我们有以下用例: 用户可以通过填写带有id、名字、姓氏和DOB的验证表自行注册业务帐户。ID是只有用户提前知道的东西。用户有5次尝试匹配其所有信息 我们计划在一个数据库中维护几个表,在其中存储验证尝试 Table 1 columns: id, attempts Table 2 columns: id, fname, lname, dob 表1和表2具有一对多关系。下面是一个例子,如果用户在其锁定之前尝试猜测名字、姓氏和dob 5次,会发生什么。应用程序检查表1的“尝试次数”列,如果某个特定id

我们有以下用例:

用户可以通过填写带有id、名字、姓氏和DOB的验证表自行注册业务帐户。ID是只有用户提前知道的东西。用户有5次尝试匹配其所有信息

我们计划在一个数据库中维护几个表,在其中存储验证尝试

Table 1 columns: id, attempts
Table 2 columns: id, fname, lname, dob
表1和表2具有一对多关系。下面是一个例子,如果用户在其锁定之前尝试猜测名字、姓氏和dob 5次,会发生什么。应用程序检查表1的“尝试次数”列,如果某个特定id为5或大于5,则该用户帐户(具有该特定id)将被视为已锁定

table 1
id   attempts
1234  5

table 2
id    fname   lname  dob
1234  john     doe   19900101
1234  jane     doe   19900101
1234  jason    doe   19900101
1234  john     dae   20010102
1234  roger    smith 19960101
上述方法的问题在于,我们只按id跟踪失败的尝试。如果用户试图更改id并进行攻击,该怎么办?通过保持名字、姓氏和dob不变并猜测id

也许我需要重新考虑验证表的设计和我的方法来解决用户试图猜测id的问题??还是有更好的方法来思考这个问题

编辑:这是一个带有前端客户端的RESTAPI url。因此,Captcha可能无法保护API???

您认为“机密”ID添加的安全值很小,这是正确的,因为它是可以强制执行的参数。如果攻击者知道第一个、最后一个dob,那么他们可以通过IDs进行迭代,直到验证为止

更好:在来自某个地址的5次无效尝试后锁定IP地址。这可以防止来自单个(或少数)计算机的幼稚暴力

最佳:为了防止机器人网络或自动化系统以脚本方式进行暴力强制,使用a是强制人工注册的传统安全模式

如果ID是“秘密”,您还应该确保它足够长(例如,不只是四位数)。也许八个字母数字就足以让你在这里承受风险了?取决于您的风险承受能力和系统/数据的敏感性

编辑:要解决REST API的安全问题。。。如果希望只允许从授权的GUI提交rest API,那么可以使用GUI提交的nonce,然后由rest服务验证。(类似于CSRF保护。)如果您希望允许从其他程序随时提交到API,这基本上是一个促进暴力攻击的方法。大多数主要的在线服务都不提供类似于注册的API。但是您仍然可以使用长/复杂的ID和锁定IP地址。

您正确地认为“机密”ID添加的安全值很小,因为它是可以强制执行的参数。如果攻击者知道第一个、最后一个dob,那么他们可以通过IDs进行迭代,直到验证为止

更好:在来自某个地址的5次无效尝试后锁定IP地址。这可以防止来自单个(或少数)计算机的幼稚暴力

最佳:为了防止机器人网络或自动化系统以脚本方式进行暴力强制,使用a是强制人工注册的传统安全模式

如果ID是“秘密”,您还应该确保它足够长(例如,不只是四位数)。也许八个字母数字就足以让你在这里承受风险了?取决于您的风险承受能力和系统/数据的敏感性


编辑:要解决REST API的安全问题。。。如果希望只允许从授权的GUI提交rest API,那么可以使用GUI提交的nonce,然后由rest服务验证。(类似于CSRF保护。)如果您希望允许从其他程序随时提交到API,这基本上是一个促进暴力攻击的方法。大多数主要的在线服务都不提供类似于注册的API。但您仍然可以使用长/复杂的ID和锁定IP地址。

我的是REST Api。我刚刚用这些信息更新了这个问题。由于captcha阻止表单提交,我如何屏蔽REST api?我的是REST api。我刚刚用这些信息更新了这个问题。由于captcha阻止表单提交,我如何屏蔽RESTAPI?