2011-06-06 107 views
0

我已经开发了一个Intranet应用程序,并使用Forms-Authentication实现了一个自定义ASP.NET成员资格提供程序。我认为在DBMS中记录所有失败的登录尝试是个好主意。因此,我创建了一个表,下面的模型:现在登录错误用户名/密码尝试IP良好实践?

enter image description here

问题

它是存储该为安全起见好的做法,或者甚至由于数据保护的原因被禁止(德国)?我将原始密码存储在数据库中,但在日志表中输入的密码错误(或错误的用户名正确)将以明文形式显示。

有人可能会争辩说,有权访问此表的每个人都可以获取用户的密码,而不是单独为此应用程序使用,但对于其他用户,由于忘记密码(或用户名)的人也可能会尝试其他人。

+1

不太确定存储IP的含义,但我可以问,为什么要记录失败的密码?这可能增加什么样的价值? – Mantorok 2011-06-06 12:49:02

+0

@Mantarok:我认为这有助于了解人们为什么无法登录(错误的用户名或密码错误,区分大小写或其他)。除此之外,我希望能够更容易地发现滥用行为。该应用程序也可以通过互联网访问。但同时我对这些信息感到不舒服。 – 2011-06-06 12:53:41

+0

是的,但正如其他人所说这是危险的,如果有人认为他们可以很容易地从中提取正确的用户名/密码组合。 – Mantorok 2011-06-06 12:55:23

回答

4

对拼错用户ID但给出正确密码的用户不是一个好主意!

0

嗯,我认为你应该只保留密码哈希值,如果你登录尝试,那么你为什么需要这些数据?用户名或姓名与IP地址和日期结合起来就可以做到。

1

我会想象它是相当危险的,因为许多糟糕的登录将只是一个字符或依此类推。如果您试图收集数据,也许您应该通过算法运行错误的密码,并且只存储您正在查找的最终报告数据..例如,如果您试图找出它们与密码有多接近,也许存储多少个字符不正确的整数。

1

通过存储密码不会获得太多收益。如果您觉得需要查看密码,可能需要在记录X次登录错误之后记录密码,这样可以避免记录拼写错误。