Hash 如何在CentOS 7上使用POSIX权限实现网页登录?

Hash 如何在CentOS 7上使用POSIX权限实现网页登录?,hash,md5,backend,salt,password-encryption,Hash,Md5,Backend,Salt,Password Encryption,我正在设计一个运行在CentOS 7上的存储设备。对于访问存储,我们使用标准的Linux POSIX权限。为了访问用于管理存储的基于web的界面,我们希望使用相同的用户名和密码,以便用户不必记住这两个用户名和密码。一切进展顺利,但有一个洞 快速架构背景:基于web的前端与设备数据库接口,后端的python服务监视数据库并采取行动。。。反馈也是这样 问题是:我应该在哪里以及如何为每个用户存储哈希和盐。主要是一个安全性和体系结构问题 更多信息:基本上,当设备启动时,后端将解析Linux passwd

我正在设计一个运行在CentOS 7上的存储设备。对于访问存储,我们使用标准的Linux POSIX权限。为了访问用于管理存储的基于web的界面,我们希望使用相同的用户名和密码,以便用户不必记住这两个用户名和密码。一切进展顺利,但有一个洞

快速架构背景:基于web的前端与设备数据库接口,后端的python服务监视数据库并采取行动。。。反馈也是这样

问题是:我应该在哪里以及如何为每个用户存储哈希和盐。主要是一个安全性和体系结构问题

更多信息:基本上,当设备启动时,后端将解析Linux passwd、group和shadow文件,并将信息放到数据库中。。。将散列和salt存储在数据库中可以吗,还是应该只保留在shadow文件中(我认为将两者都存储是有用的,这样会使编程更容易,但是否存在安全问题)?我听说你从来都不想让服务器知道实际密码,但是如果你也应该在服务器而不是客户端进行哈希运算,那么这怎么办呢?i、 e.在散列前,服务器将知道一行代码的密码

这是一个常见主题的问题,但为这个特定体系结构优化身份验证被证明有点令人困惑。如果有人做过类似的事情,那么一张图表就抵得上千言万语

上面的图表似乎显示了我打算做的最低限度。但这引起了人们的关注:

  • 密码和用户通过明文传输到服务器
  • 服务器将知道密码一分钟
  • 数据库同时知道散列和盐

  • 这三个问题正是阻止我实现这一目标的原因。我已经实现了很多次变体,这次我想把它做好。我的担忧是否合理?我如何补偿

    您可以使用Javascript在浏览器中执行MD5(和其他)哈希。我以前使用过,从用户那里获取用户名和密码,从服务器获取nonce,对它们进行散列,然后将结果发送回服务器(或者类似的东西,我一时记不起来)。我想,唯一的问题是你的客户端[生成的]散列变成了密码。。。但我不能100%确定这意味着什么。从我的研究,我现在知道https将解决安全漏洞1。。。我想这就是它的设计目的。2和3我仍然不确定,但现在我认为3是更关键的一个;可能只是为了保护mysql。有人在那里必须是一个web界面数据库POSIX用户管理和安全专家。。。任何人lolI可能记错了PAM MD5密码的工作方式,但我建议服务器发送它存储的salt作为加密密码的一部分,然后客户端加密salt+密码,并将其发回。然后服务器检查结果是否与它存储的内容匹配。这个总体方案始终依赖于服务器知道哈希+盐。在浏览器中进行加密意味着您根本不依赖TLS机密性。