php - php中的密码/登录系统

标签 php security hash authentication

对于 php 中的登录系统,这是一个合适的概述它是如何工作的:

用户输入用户名和密码,点击登录按钮。

  1. 检查用户是否存在于数据库中,
  2. 如果是,则取回盐 对于那个用户
  3. 散列密码和 盐(这会在 客户端还是服务器端?我认为 客户端会更好,但是 php 是服务器端所以你会怎么做 这个?)
  4. 对照值检查值 数据库,
  5. 如果值匹配则 用户输入了正确的密码 并且他们已登录。

最佳答案

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 并将从数据库读取的预哈希密码发送到您的系统。

  1. 用户提交用户名和密码
  2. 使用系统的标准盐对密码进行哈希处理
  3. SELECT some,cols FROM your_users WHERE username=?密码=?
  4. 计算从数据库返回的行数。

关于php - php中的密码/登录系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2591963/

相关文章:

java - 如何以编程方式检测 Android 中是否正在运行任何屏幕录制进程/应用程序?

perl - 在 perl 中初始化哈希引用

php - 我们有任何 php 应用程序服务器(不是网络服务器)吗?

php - 在 AWS Elastic Beanstalk 上安装 php mongo 驱动程序

javascript - 在 Javascript 中显示 PHP 变量 - 安全点

asp.net 保护图像免受其他用户的静态请求?

python - boost Python 哈希

hash - 如果 md5 消息的长度已经正确,那么填充它的目的是什么?

php - 在 VSCode 上调试 Laravel 应用程序

php - jquery 和文本区域