将现有用户和密码迁移到新的 Symfony/sfDoctrineGuard 用户系统

2024-07-02

我有一个现有的、非基于框架的 PHP/MySQL 网站。它有一个简单的安全模型,带有一个包含用户名和散列(MD5)密码的用户表。

我目前正在开发该网站的“版本 2”,这次使用 Symfony 和 Doctrine。新版本运行良好,我正在使用 sfDoctrineGuard 插件进行用户管理。

我希望以最少的麻烦将现有用户迁移到新应用程序,并保留他们现有的用户名和密码。不过,我的主要问题是我想更改我正在使用的密码哈希。

The current site uses unsalted MD5 hashes of the passwords*. I've already figured out how to migrate users to Symfony/sfDoctrineGuard while maintaining the existing algorithm (by providing my own "algorithm" function for unsalted MD5.) But unsalted md5 obviously isn't ideal.

所以 - 我的问题是,鉴于我可以使用自定义纯 MD5 密码哈希算法成功地将一堆用户迁移为 sfDoctrineGuard 用户,有什么方法可以转换这些用户,以便他们使用标准的加盐 SHA1 sfDoctrineGuard 算法?

我认为我只能在每个用户登录时为每个用户执行此操作,因为这是我唯一一次拥有用户的明文密码以进行重新哈希。我想我需要做的是在“此用户刚刚使用此密码成功登录”点处进行挂钩,这样我就可以将用户的算法、盐和密码设置为新的 SHA1 系统,并将用户保存回数据库,而他们甚至不知道。

我已经进行了一些研究,但我无法找到一种方法来在正确的位置覆盖或挂钩 sfDoctrineGuard (特别是 sfGuardSecurityUser ,我认为?)登录系统。嗯,不是没有修改实际的插件文件,这看起来很邪恶。

有 Symfony/sfDoctrineGuard 专家能给我指出正确的方向吗?

*Don't look at me like that, it was my first website! And at least I didn't store them plaintext...


您有很多选择来解决您的问题。

您可以重载或更改 sfDoctrineGuardPlugin 中的几乎所有内容。

如果您需要更改 sfGuardSecurityUser 中的某些内容,则可以在应用程序的 User 类(实际上扩展了 sfGuardSecurityUser)中进行操作。

还可以重载默认放入 lib/model/doctrine/sfDoctrineGuardPlugin 目录中的模型类。

您也可以扩展默认保护架构。例如,您可以添加一个字段,告诉您用户是否更改了密码,如果没有更改则更新密码。

最后,您可以实现自定义密码检查和设置算法:http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin?tab=plugin_readme http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin?tab=plugin_readme(滚动到“使用外部方法检查用户密码”和“更改用于存储密码的算法”)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将现有用户和密码迁移到新的 Symfony/sfDoctrineGuard 用户系统 的相关文章

  • PHP 5 - 保护站点管理区域的安全

    我目前正在使用 Kohana 作为框架编写几个 MVC 站点 每个都有一个简单的管理区域 管理员可以在其中上传和编辑内容 我目前正在将管理员的用户模型存储在会话中 并使用以下方法检查他们是否是管理员 private function che
  • 打开 Access 2007 文件

    我正在尝试打开受我们客户端保护的 Access 2007 文件 当我双击它时 它显示以下错误 错误 您没有使用该对象所需的权限 让您的系统管理员或创建此对象的人员为您建立适当的权限 错误3033 在我搜索此解决方案时 我了解到它受 Wind
  • ulimit -r 返回不同的值

    我将以下两行添加到系统范围的 etc security limits conf 中 soft rtprio 55 hard rtprio 55 系统重新启动后 根据我在计算机上访问用户帐户的方式 我会得到两个不同的结果 user clien
  • 在数据库中存储用户电子邮件地址的最佳和最安全的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 出于安全原因 在将用户电子邮件放入数据库之前是否值得对其进行加密 我知道我们对密码进行哈希和加盐 但那是另一个故事 因为我们并不真正需要密码原件
  • 避免从浏览器控制台修改 Javascript 变量

    我有个问题 我定义了一些全局变量并将其命名为一个名为 app 的对象 例子 window app foo null bar null 好吧 我的想法是 我希望能够通过调用 app foo baz 或 app bar baz 从任何模块修改这
  • 存储聊天消息和文件的最佳方式

    我想知道您对将聊天消息存储在数据库中有何看法 我需要能够将其他内容绑定到它们 例如文件或联系人 并且使用数据库是我目前看到的最佳方法 文件也有同样的问题 因为它们可以绑定到聊天消息 我也必须将它们存储在数据库中 对于数千条消息和文件 我想知
  • 功能测试 - 模拟服务不会保留在服务容器中

    我希望有人能够对我面临的这个问题有所启发 问题 我在功能单元测试中模拟了doctrine orm default entity manager 服务 我将其注入客户端服务容器中 这样我就不必在功能测试过程中访问我的数据库 对于仅涉及 GET
  • 如何使用 Doctrine (DQL) 限制左连接的结果

    在 symfony 2 应用程序中 我有 2 个由一对多关系 用户和集合点 我正在尝试寻找我的用户实体并加入最后的约会对于找到的每个用户 这个想法是这样的 qb this gt createQueryBuilder p qb gt sele
  • IE8安全警告

    在我正在处理的 https 网站上 我不断收到 您只想查看安全传送的网页内容吗 此网页包含不会使用安全 HTTPS 连接传送的内容 这可能会损害网站的安全性整个网页 我确保该网站有相关链接 表单操作也是相对的 所有图像 src 也是相对的
  • 存储应用内购买的正确且安全的方式

    在设备上存储应用内购买的最佳方式是什么 这样购买也可以离线访问 但是 购买的安全性没有受到损害 不要在设备上存储任何有价值的东西 因为它不可信 并且很容易被有动机的人破坏 现在 所有这一切都取决于所购买物品的类型和价值 以及如果物品受损会发
  • Asp.net Mvc自定义机制处理未授权请求

    对于我的网站 我希望安全控制器 或操作 具有以下行为 如果用户发出正常请求重定向到登录页面 我可以轻松做到 如果请求是Ajax类型Request IsAjaxRequest true 返回状态码401 我如何为此创建一个过滤器 public
  • Chrome 中的并发 Ajax 请求

    I have read limitation on concurrent ajax requests to a particular domain from chrome browser to be 6 Earlier I had test
  • 密码难道不是一种隐秘的安全形式吗?

    我知道通过模糊实现安全性是不受欢迎的 并且被认为不是真正安全 但是通过模糊实现密码安全不是吗 只有没有人发现它 它才是安全的 这只是默默无闻程度的问题吗 即 经过良好加盐和散列处理的好密码是无法破解的 请注意 我不是询问保存密码的过程 假设
  • 有人可以向我指出一个好的 PHP/MySQL 加盐哈希密码实现吗?

    在阅读了盐密码哈希之后 我想为我正在构建的站点的管理区域实现一个简单的版本 如果您有任何很好的链接以及很好地实现了这个想法的代码 如果您能分享 我将不胜感激 Thanks 注册过程 用户输入密码 系统根据随机数据生成盐值 可能是时间和 PI
  • 何时使用 NSSecureCoding

    我正在学习有关NSSecureCoding http developer apple com library mac documentation Foundation Reference NSSecureCoding Protocol Re
  • 如何调试 WScript.Shell 对象的 ASP 权限问题?

    我必须从一些旧版 ASP 应用程序运行命令行操作 这是我的代码 这是我收到的结果 Microsoft VBScript 运行时错误 800a0046 没有权限 test asp 第 6 行 你知道如何让 IIS6 运行这段代码吗 注意 当然
  • HTTP 摘要式身份验证

    我想将 HTTP 摘要身份验证与存储用户名和加密密码的中央数据库结合使用 这些数据应该由不同的服务器使用 例如 Apache httpd 或 Tomcat 客户端将是使用浏览器和其他应用程序以 RESTful 方式进行通信的人类 据我了解
  • Java从受限层调用方法

    我什至不确定这是否可行 但我想询问社区的总体意见 我必须解决以下问题 我的项目有 2 层 一个核心层和一个业务层 该核心层提供业务层 这时候Business类就可以导入Core类 为所欲为了 核心类只能导入核心类并使用其方法 禁止访问业务类
  • 教义:如何从侦听器(preDqlSelect)内的选择查询中删除部分 where 子句?

    我的侦听器是行为的一部分 该行为应该删除任何调用的 select 查询的 where 子句中的所有 is published 检查 在子句中添加一个部分确实很容易 但如何删除一个部分呢 有一些功能 例如Doctrine Query gt r
  • 如何在javascript中使用MD5传输密码

    我弹出一个 jquery 对话框模式框用于登录我的网站 当用户单击登录时 它会向 login php 文件发出一个 post 请求 如下所示 post includes login php user username pass passwo

随机推荐