如何实现Web应用程序的登录系统?

jrh*_*ath 14 login

我正在为我正在建设的网站编写登录系统.
以下是我如何实现登录系统的本质:

我有两个表:用户和会话.

   users: uid | uname | pass
sessions: sid | uid | ts | ts_expires
Run Code Online (Sandbox Code Playgroud)

因此用户输入uname/pass组合.

  • 如果组合不正确,我会重定向到"错误的身份验证"页面.
  • 如果组合是正确的,我:
    • 生成一个随机的sessionid(sid)
    • 插入一条记录sessions,将该sid与提供的用户名的uid相关联.
    • 设置一个以刚刚插入sid的随机值命名的cookie .sidsessions

在每个需要用户登录的页面上,我检查:

  • 是否设置了cookie
  • 如果sid有效

所以我的问题是:

  • 这种机制可能存在哪些潜在问题?
  • 如何实施良好的登录系统?

PS:我还没有使用SSL安全登录.所以这是我发现的唯一问题,截至目前.哦,我使用php和mysql,如果这是相关的.


编辑:我存储的密码不是明文,而是密码用户名的MD5.

所以,可以pass = MD5($uname.$pass)这么说.

Mal*_*ist 17

哈希那个密码,加盐!使用像bcrypt这样的强哈希.如果你必须使用MD5/SHA使用一种称为拉伸和哈希的技术,它的哈希数千次.用户无需关心是否需要一秒钟检查他/她的密码而不是1/1000,但是蛮力破解者会.

记录尝试并防止强力尝试.

登录后要非常小心存储用户凭据的位置.您不希望他们更改它.

并使用SSL!