【问题标题】:Laravel encrypt user email without breaking authenticationLaravel 在不破坏身份验证的情况下加密用户电子邮件
【发布时间】:2015-04-27 15:07:46
【问题描述】:

我想在数据库中加密电子邮件地址。使用 mutators 我可以为我的 laravel web-app 加密和解密模型属性。

问题在于电子邮件属性用于身份验证。因此,对电子邮件使用 mutators 似乎完全破坏了我的应用程序,大概是通过 Auth::check()、id()、login() 等。

我曾考虑编写自定义身份验证驱动程序,但无法正常工作。

我只是想知道在哪里重载模型以在 set 上添加加密并在 get 上解密,这将与 laravel 身份验证方法兼容。

【问题讨论】:

  • 问题是 Laravel 使用简单的 SQL 来查找用户。要执行您想要的操作,您必须获取所有用户解密电子邮件地址,然后通过电子邮件搜索用户。我不认为这可以通过覆盖一个方法来完成......
  • 你不能做一个加密的电子邮件检查。因此,从用户(他们的电子邮件)那里获取输入。使用与存储在数据库中的方法相同的方法加密他们的电子邮件。然后将这些与身份验证值进行比较?
  • @ChrisTownsend 这将是快速破解,但我想知道是否可以在尊重 laravel 现有身份验证方法的同时完成。
  • 我想知道您是否可以扩展身份验证类,方法是添加到此 laravel.com/docs/4.2/extending#authentication 并将您自己的添加到界面中
  • 是的,已经试过了,可悲的是根本无法让它工作

标签: php authentication encryption laravel-4


【解决方案1】:

除了加密之外,您还需要在自定义 Auth 提供程序中实现某种 blind indexing

有很多方法可以搞砸这样的实现。请务必参考 CipherSweet 文档(尤其是其 security designinternals),以确保您的实现正确无误。

或者,您可以只使用 CipherSweet 为您的自定义 Auth 提供程序提供支持,而不必自己担心加密实施。

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 2020-10-28
    • 1970-01-01
    • 2021-02-27
    • 2011-12-29
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多