我一直在为我的应用程序登录系统。在做了一些研究之后,我发现现在最好的做法可能是在一些失败的登录后锁定用户帐户。这将防止未经授权的用户连续多次尝试/猜测密码。我想知道在我的系统中实现此功能的最佳方法是什么?我有SQL 2008与我的数据库和后端的ColdFusion 2016进行通信。我将检查onClick
或cin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
buildAlertMessageNoGps();
} else if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
if (getFlag() == CIN) {
getMyCurrentLocation();
CheckinButton();
Toast.makeText(Insert_DataSql.this, "True statement", Toast.LENGTH_SHORT).show();
dat.setText(date);
new Insert_data().execute("");//insert for button
// tim.setText(formattedDate);
}
else{
getMyCurrentLocation();
CheckoutButton();
Toast.makeText(Insert_DataSql.this, "Wrong statement", Toast.LENGTH_SHORT).show();
dat.setText(date);
new Insert_data().execute("");
// tim.setText(formattedDate);
}
}
}
}
以及username
的查询如下所示:
IP
我不确定是否应该检查sessionID(J2EE会话ID)。同样从上面的查询结果中,我应该能够检查登录失败的次数是否为3或更高,然后锁定sessionID
的帐户,或者它是否有6次尝试失败或更多SELECT COUNT(LoginID) AS count
FROM FailedLogins
WHERE LoginUN = <cfqueryparam cfsqltype="cf_sql_varchar" value="#FORM.username#" maxlength="50">
OR LoginSessionID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#SESSION.sessionid#" maxlength="50">
OR LoginIP = <cfqueryparam cfsqltype="cf_sql_varchar" value="#REMOTE_ADDR#" maxlength="20">
。在coldfusion中实现这个有一个很好的解决方案吗?我不确定这种逻辑的最佳做法是什么。如果有人能提供一些很棒的例子。谢谢。