【问题标题】:How to anonymize credentials in database with CakePHP如何使用 CakePHP 匿名化数据库中的凭据
【发布时间】:2018-05-02 08:44:45
【问题描述】:

我的数据库中的登录凭据有一点问题。 我正在从事一个敏感项目,所有数据都需要匿名化。 这是我的问题:

我正在使用电子邮件地址和密码来识别我的用户。但电子邮件地址不是匿名数据,例如:firstname.lastname@domain.com。所以我需要匿名化这些数据。

对于我的其他数据,如 lastnamefirstname,我在 CakePHP 中使用 Security::encrypt($firstname,$privatekey)。 (我的私钥对每个用户都是唯一的)

但我的电子邮件地址用于用户登录,如果我以相同的方式对其进行加密,登录将不再起作用。我尝试加密登录表单发送的电子邮件,但结果与第一次加密不同。

我不能使用 SHA 方法来加密这些数据,因为我需要在用户界面中显示它。

我目前能找到的唯一解决方案是以我自己的方式加密这些数据,但这并不安全

我的问题是:

  • 可以加密此数据并保持登录工作。
  • 如果是,我该怎么做?

提前谢谢你!

【问题讨论】:

  • 双向加密? openssl_encrypt & openssl_decrypt
  • 仅供参考,加密电子邮件地址不会使数据匿名,因为加密是可逆的。如果您需要以无法恢复的方式匿名数据,则需要使用强加密单向哈希(至少 SHA-256),最好使用盐。这将使数据或多或少无法恢复(只要盐保持安全,即使它不安全,它仍然需要字典攻击来恢复任何有意义的数据)
  • @GordonM 如果我使用 SHA256 对我的电子邮件地址进行哈希处理,我将无法显示它。我们正在使用我们的加密方法,每个用户都有一个唯一的私钥和一个盐,因此反转它更加复杂
  • @ThomasRollet 那么你有两个相互矛盾的问题。如果数据是匿名的,那么它就无法显示,因为这就是匿名的全部意义所在。如果它可以显示,那么它就不能匿名,因为它可以用于通过纯文本数据(甚至可能包含他们的名字)来识别特定用户。您是否将匿名与安全混淆了?
  • 我不确定我的想法是否可行。但是,如果我是你,我会这样做。我可能会使用 2 列用于不同目的的电子邮件地址。一列存储哈希版本,另一列是非对称加密版本,我可以用离线私钥或类似的东西解密:)

标签: php security cakephp encryption


【解决方案1】:

建议一 - 使用随机用户名,这样您也可以加密电子邮件

由于您已经加密了名字,因此您也可以以相同的方式加密电子邮件。

那么,用户将如何登录呢?

解决方案是生成每个用户可以使用的随机用户名。这样你就不能从“user19281a18a7as”中推断出太多,因为所有其他字段都将被加密。

您需要注意用户名尽可能随机,所以不要使用序列来生成它:)

有趣的是,您的登录屏幕看起来更像是要求输入两个密码,因为用户名也变成了看起来像密码的东西......

建议二

使用 API KEY 允许您的用户进入。因此,不要使用丑陋的用户名和密码,只需拥有一个丑陋的长 API KEY,用户必须将其粘贴到登录框中。

这并不优雅,但如果他们想匿名,那就要付出代价:)

如果您愿意,您甚至可以使用私钥/公钥,因为您的用户对它们很熟悉

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 2011-09-24
    • 1970-01-01
    • 2013-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多