我们有以下用例:
用户可以通过填写带有身份证、名字、姓氏和出生日期的验证表格来自行注册企业帐户。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 并进行攻击怎么办?通过保持名字,姓氏和出生日期相同并猜测ID?
也许我需要重新考虑验证表的设计和我的方法来解决用户试图猜测 id 的问题?或者有没有更好的方法来思考这个问题?
编辑:这是一个带有前端客户端的 REST Api url。所以Captcha可能不会保护API??