Encryption 在后端更新pw以外的内容时,自定义密码加密失败
我有以下情况: 现有用户已完全存储和维护在第三方软件中,该软件使用与saltedpasswords不同的密码加密。新的网站将与TYPO3建立,应用于未来的用户管理。由于数据也需要存储在第三方软件中,我们不能简单地在登录时更新它们。它们是必需的,因为有一个用于证书请求的API。所以,只有一些数据被移动到TYPO3 无论如何,还没有什么特别的。我添加了一个新的salt方法,它基本上在以下场景中工作:Encryption 在后端更新pw以外的内容时,自定义密码加密失败,encryption,typo3,backend,password-encryption,typo3-7.6.x,Encryption,Typo3,Backend,Password Encryption,Typo3 7.6.x,我有以下情况: 现有用户已完全存储和维护在第三方软件中,该软件使用与saltedpasswords不同的密码加密。新的网站将与TYPO3建立,应用于未来的用户管理。由于数据也需要存储在第三方软件中,我们不能简单地在登录时更新它们。它们是必需的,因为有一个用于证书请求的API。所以,只有一些数据被移动到TYPO3 无论如何,还没有什么特别的。我添加了一个新的salt方法,它基本上在以下场景中工作: 通过BE创建新用户 通过FE创建新用户(EXT:femanager) 通过BE更新现有用户的PW
- 通过BE创建新用户
- 通过FE创建新用户(EXT:femanager)
- 通过BE更新现有用户的PW
- 通过FE(EXT:femanager)更新现有用户数据
- 当通过BE=>更新除密码以外的任何数据时,密码将被更新,并以“M”开头
AMartinNo1临时解决方案: 包含用户的第三方软件由防火墙自行托管和保护。因此,作为第一步,我们将使用相同的机制—md5哈希 EXT:saltedpasswords检查
TYPO3\CMS\saltedpasswords\Evaluation\Evaluator::evaluateFieldValue($value,$is_in,&$set
是否是一个简单的散列,再次使用相应的SaltFactory
进行散列,并加上前缀M
在我们切换到改进的密码加密机制(也需要在第三方软件中进行调整)之前,我只需在sysext核心方法中注释“双重散列”,以便我们继续开发其他函数
当然,我们会更改第三方软件(更换或更新)在上线之前,我们可以使用正确的密码加密。这是不安全的,因为开发问题,您将用户置于风险中!仅使用哈希函数是不够的,仅添加一个salt对提高安全性几乎没有作用。相反,使用随机salt在HMAC上迭代大约100毫秒,然后用散列保存salt。使用诸如
PBKDF2
,Rfc2898DeriveBytes
,password\u散列
,Bcrypt
或类似的函数。重点是让攻击者花费大量时间通过蛮力查找密码。正如我所说的,这只是在开发期间。在上线之前会被更改。因此,你是在浪费时间在一个临时的安全解决方案上花费时间,以后会被替换,这似乎是一种浪费。有趣的是,安全性是如何最后出现的,我们有这么多的安全故障。相关性?早期获得安全性似乎不是一个项目影响,除非……所以问题是效益,获得一个产品和一代人的资金是b对公司来说,安全性对用户来说是一个好处。进退两难的问题是:关注哪一个等等,我们已经找到了答案。首先,开发一个定制的salt更容易,它本身在几分钟内就完成了。是的,最后花了更多的时间,但这是因为TYPO3执行了我们以前不知道的md5检查。而且,我从未说过这将被发布。我们迁移用户数据,我们可以用真实数据测试UI等是否正常工作,同时我们还进行密码加密。一般来说,密码和加密不应该一起使用,请注意,哈希不是加密。PHP有安全且易于使用的密码哈希:password\u哈希
和密码\u验证
,使用它们比散列解决方案更容易,这是有争议的。如果你“为下一代创造一个更好的世界”,请将安全性放在首位。