【发布时间】:2018-05-02 08:44:45
【问题描述】:
我的数据库中的登录凭据有一点问题。 我正在从事一个敏感项目,所有数据都需要匿名化。 这是我的问题:
我正在使用电子邮件地址和密码来识别我的用户。但电子邮件地址不是匿名数据,例如:firstname.lastname@domain.com。所以我需要匿名化这些数据。
对于我的其他数据,如 lastname 或 firstname,我在 CakePHP 中使用 Security::encrypt($firstname,$privatekey)。 (我的私钥对每个用户都是唯一的)
但我的电子邮件地址用于用户登录,如果我以相同的方式对其进行加密,登录将不再起作用。我尝试加密登录表单发送的电子邮件,但结果与第一次加密不同。
我不能使用 SHA 方法来加密这些数据,因为我需要在用户界面中显示它。
我目前能找到的唯一解决方案是以我自己的方式加密这些数据,但这并不安全
我的问题是:
- 可以加密此数据并保持登录工作。
- 如果是,我该怎么做?
提前谢谢你!
【问题讨论】:
-
双向加密? openssl_encrypt & openssl_decrypt
-
仅供参考,加密电子邮件地址不会使数据匿名,因为加密是可逆的。如果您需要以无法恢复的方式匿名数据,则需要使用强加密单向哈希(至少 SHA-256),最好使用盐。这将使数据或多或少无法恢复(只要盐保持安全,即使它不安全,它仍然需要字典攻击来恢复任何有意义的数据)
-
@GordonM 如果我使用 SHA256 对我的电子邮件地址进行哈希处理,我将无法显示它。我们正在使用我们的加密方法,每个用户都有一个唯一的私钥和一个盐,因此反转它更加复杂
-
@ThomasRollet 那么你有两个相互矛盾的问题。如果数据是匿名的,那么它就无法显示,因为这就是匿名的全部意义所在。如果它可以显示,那么它就不能匿名,因为它可以用于通过纯文本数据(甚至可能包含他们的名字)来识别特定用户。您是否将匿名与安全混淆了?
-
我不确定我的想法是否可行。但是,如果我是你,我会这样做。我可能会使用 2 列用于不同目的的电子邮件地址。一列存储哈希版本,另一列是非对称加密版本,我可以用离线私钥或类似的东西解密:)
标签: php security cakephp encryption