【问题标题】:How to store data securely using Laravel / Eloquent firstOrCreate?如何使用 Laravel / Eloquent firstOrCreate 安全地存储数据?
【发布时间】:2016-05-09 00:07:13
【问题描述】:

我想检查用户是否存在,如果不存在,则为其用户名(一个 gmail 地址)创建一个新条目

为了安全起见,我希望对电子邮件进行哈希处理,但是在每次检查时 bcrypt salt 都会更改,因此确定为新用户。

$user = user::firstOrCreate(['email' => bcrypt($googleUser['email'])]);

我怎样才能保证这个安全并让 firstOrCreate 识别以前的用户?

【问题讨论】:

  • 保护电子邮件地址的原因是什么?
  • 似乎是明智之举!这是人们的私人信息;我想做的最后一件事就是让它变得脆弱。该网站主要是为残障人士设计的 - 有些人很容易通过电子邮件联系。
  • 所以使用用户名登录而不是电子邮件更简单
  • 这就是我所做的......我有一个脚本/它可能是一个文件,其中存储了一个“随机 32 字节字符串”。它位于document root 之外的服务器上。您将其用作电子邮件地址的盐。使用任何cryptographic hash 来散列电子邮件地址。这是您存储在数据库中用于用户数据的密钥。这将是安全的。这是您与用户电子邮件进行散列以进行查找的密钥。它可以存储在环境变量、配置条目等中。
  • 您能否发布您最终决定做的事情作为答案并接受它 - 它标志着它已完成,因此没有人会浪费时间。很高兴能提供帮助。

标签: php laravel hash eloquent bcrypt


【解决方案1】:

使用 Laravel 自动生成的 env('APP_ID') 作为静态 SALT 和 PHP 的 sha1() 函数解决

 $user = user::firstOrCreate(['email' => sha1($googleUser['email']).env('APP_ID')]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 2012-02-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多