对于 php 中的登录系统,这是一个合适的概述它是如何工作的:
用户输入用户名和密码,点击登录按钮。
- 检查用户是否存在于数据库中,
- 如果是,则取回盐 对于那个用户
- 散列密码和 盐(这会在 客户端还是服务器端?我认为 客户端会更好,但是 php 是服务器端所以你会怎么做 这个?)
- 对照值检查值 数据库,
- 如果值匹配则 用户输入了正确的密码 并且他们已登录。
最佳答案
Checks if user exists in database, if it does then retrieve the salt for that user hash the password and salt
没有。这意味着您正在访问数据库两次。
hash the password and salt (would this be done on the client or server side? I think client side would be better
没有。对密码进行散列处理的目的是,如果有人破坏了您的数据库,他们将无法(轻松地)找到他们需要发送到您的系统(或其他系统)以该用户身份登录的内容。
如果在将密码发送到服务器之前对密码进行哈希处理,那么攻击者可以绕过 JS 并将从数据库读取的预哈希密码发送到您的系统。
- 用户提交用户名和密码
- 使用系统的标准盐对密码进行哈希处理
- SELECT some,cols FROM your_users WHERE username=?密码=?
- 计算从数据库返回的行数。
关于php - php中的密码/登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591963/