0

为社交网站创建活动跟踪系统。从登录点到注销的所有用户活动都将被跟踪。这意味着第一个用例是用户的登录。每个活动都将具有相同的格式,因此一旦我弄清楚如何跟踪一项活动,我就可以为所有活动创建 chema。目前登录我有如下步骤:

我有两个解决方案:
活动 1:用户尝试登录
活动 2 A:用户已成功登录
活动 2 B:用户登录失败。
活动 2 BA:用户因密码无效而无法登录
活动 2 BB:用户因帐户锁定而无法登录。

或者

活动 1:用户登录 - 结果 = 通过或失败,如果失败原因 = flag_id of reason。

因此,我必须创建模式。现在我有这样的:
activity_id
object_id (fk)
session_id (fk)
user_id (fk)
flag_id (fk)
created_dt
friend_id (fk)
result (pass/fail)

但当然,这是一项正在进行的工作。

4

1 回答 1

1

听起来这个要求只是简单地说明(好吧,试图简单地说明)应该对系统的登录尝试进行审计​​,包括登录失败的原因。该表可能如下所示:

LoginAudit
  ID (some kind of primary key, whatever your standards are)
  UserID (FK to whatever table holds users, or whatever uniquely identifies a user)
  LoginTime (time stamp of attempt)
  IsSuccessful (bit, true or false, was the login successful?)
  Status (FK to a table of known statuses, or just the status itself for a flat de-normalized structure, indicating "success" or a reason for failure, such as "invalid password" or "account locked")
  (more relevant data, such as user's IP or location, etc.)...

这将是一个写入繁重的表(因此请注意索引),并且永远不应该更改数据。您可能希望在其上放置一些触发器以防止更新等。

附带说明一下,这可能不言而喻,但我觉得无论如何我都应该说出来,以防万一,确保在将登录失败原因存储在此处时不会向用户显示登录失败原因。用户应该看到的只是登录失败。登录失败的原因为攻击者提供了额外的信息,他们可以使用这些信息来操纵系统。

于 2010-12-26T13:29:36.887 回答