- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设用户正在网站上创建帐户。用户提供的电子邮件地址保存在 mysql 中,但在保存之前进行了哈希处理。这样,可能的黑客就不会看到电子邮件地址。但另一方面,对于我或你(“程序员”)而言,无法查看用户是否试图使用相同的电子邮件地址创建帐户(我真的想阻止)。
问题:一般来说,您对解决这个问题有何建议?有任何建议或解决方案吗?
问题:对电子邮件地址进行哈希处理时,帐户会更“安全”吗?
附言仅供引用,此应用程序使用 PHP 作为服务器语言。
更新:
最佳答案
添加unique
索引 email
柱子。这将防止具有相同 email
的任何其他行要添加的字段。没有错误,顺利。
假设您的表是 users
并且您将电子邮件存储在 email_hashed
中:
ALTER TABLE users
ADD UNIQUE (email_hashed)
如果您已经有重复项,则在应用前需要先清洁。
.
简单地哈希电子邮件和SELECT
来自数据库的所有具有该散列的行。像那样:
$email = 'ex@example.com';
$hashed = someHashing($email);
$sql = ("SELECT id FROM users WHERE email_hashed = '$email'");
..
如果要获取任何行,那么您可以执行一些操作,例如显示消息、错误或任何内容。
我建议同时使用这两种解决方案。
是的,您正在使用 BCrypt
.如果您想散列电子邮件,有两种方法可供您使用(不知道为什么,但无论如何!)。一个你会被所有人 mock 的人,一个更好的人。
第一个(可笑的)是:
SELECT
来自数据库的整个表,其中包含所有可能的现有电子邮件散列foreach() {}
遍历数据库中的每个散列password_verify()
比较哈希true
然后运行一些你自己的代码第二个很简单:
md5
(使用 md5('text')
函数)或 sha256
对于更长的哈希值(使用 hash('sha256','text')
)Question: Would an account be more "secure" when hashing the e-mail address?
我认为这不是在 StackOverflow 上提出的问题,但因为它是“奖励”,所以我会在这里提出一些想法。
虽然我不是安全专家,所以我可能不知道某些事情。
无论如何,使用 BCrypt
散列密码并确保帐户上的任何内容都不能以不需要密码的任何方式进行编辑(例如有缺陷的 API 或受损的管理仪表板)。我认为您还应该保护易受攻击的数据(如姓名、地址、电话号码等)不被公开访问。
散列电子邮件有只有一个我能想到的目的。万一成功破解,倾倒了您所有数据库的人将不会获得任何一个电子邮件地址。那很好。但它也会阻止您发送时事通讯、帐户到期通知和其他重要电子邮件。
在 90% 的网站中,我会说“散列电子邮件,你疯了吗?”,但如果你根本不需要重复使用电子邮件(除了注册电子邮件,你永远不会发送任何电子邮件)并希望用户电子邮件非常安全,那么是的,散列可以证明是有用的。但是请不要BCrypt
:P
关于php - 防止用户使用一个电子邮件地址创建多个帐户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28832657/
我正在尝试从如下所示的变量中提取一些内容: v1 ","person 2 ") (该变量有数百个观察值) 我想最终创建第二个变量来提取他们的电子邮件以提供以下输出: v2 ","person 2 ")
当您添加 facebook 连接以允许 facebook 用户登录您的站点时,您可以取消用户名和电子邮件地址吗? 最佳答案 是的,您需要先提示他们“电子邮件”数据权限。 Facebook 也在很快改变
我们正在寻求建立一个专门用于商业/商业用途的新网站。我们只需要允许“企业”电子邮件地址注册。因此,使用 Gmail、Hotmail、Yahoo 等的用户无法使用这些电子邮件地址申请。 除了创建 gma
我想通过Identity内的Claim访问我的电子邮件地址 我尝试访问为: var email = User.Identity.GetClaimsByType("emailaddress").ToSt
我正在使用 Hammock 库和 C# 从以下帖子中的链接获取用户的基本配置文件和电子邮件地址 here . 我也关注了这些帖子 here和 here 然而,对于我来说,我无法获得 linkedin
我正在使用 Hammock 库和 C# 从以下帖子中的链接获取用户的基本配置文件和电子邮件地址 here . 我也关注了这些帖子 here和 here 然而,对于我来说,我无法获得 linkedin
我正在尝试制作一个应用程序,通过获取 json 编码数组来从 SQL 数据库获取数据。 它获取地址数据和其他类型的数据,然后将其传递给 Mapkit map View 元素和一些标签/ TextVie
当使用钥匙串(keychain)和证书助手从现有 CA 申请证书时,所有说明都说我应该单击“保存到磁盘”选项,并且不需要“CA 电子邮件地址”。 我看到的面板没有提供“保存到磁盘”选项,当我尝试在没有
我的问题不在于我无法将电子邮件保存到数据库中。任何人都可以做到。这是我的问题: 当用户在我的网站上创建帐户时,他们会获得 ID、用户、密码和电子邮件地址数据。对于密码,我对其进行哈希处理,这样如果有人
我想向非 ASCII 电子邮件地址发送电子邮件,但我不确定使用 JDK8 的推荐程序是什么。 我应该如何处理以下电子邮件地址? Dörte@example.com test@Sörensen.de D
我想阻止用户: 从第一个文本框复制粘贴到第二个 右键单击并使用上下文菜单将第一个文本框复制并粘贴到第二个文本框。 这是行不通的。 Confirm email page
我正在使用两个不同的 Git 存储库(即 github 和 stash),我想为每个存储库使用不同的电子邮件地址。我知道我可以使用 git config 但我不想每次创建新工作区时都必须记住这样做。所
类似于this question ,但不确定在这种情况下如何实现。 受信任的用户(不需要关心验证输入)正在将电子邮件地址键入/粘贴到文本字段中。在模糊事件中,我想查看文本并清理他输入的任何内容(通常是
我正在使用以下代码使用 VBA 发送电子邮件。但是,没有发送电子邮件......我认为这是由于 '.To = ' 代码行中有多个电子邮件地址。有没有办法调整代码以允许多个电子邮件地址? 我试过看 Ro
我正在尝试制作一个脚本,该脚本将在整个网页中搜索以@xyz.com 结尾的电子邮件地址。例如: $(document).ready(function() { $("body:contains(
我们正在使用Office 365,并且遇到了创建重复帐户的问题。这会导致在用户地址上添加数字(john.doe@c0mpany.onmicrosoft.com也将是john.doe5826@c0mpa
我的类型是用户:电子邮件和用户名。 电子邮件字段设置为字符串类型,并使用自定义分析器“exact_lower”: index.analysis.analyzer.exact_lower: type
这个问题已经有答案了: Delete a specific user from Firebase (6 个回答) 已关闭 3 年前。 我正在建立一个网站,其中某个“管理员”用户可以删除任何其他用户的帐
我已经完成 Facebook 登录,但我不知道如何获取电子邮件地址并以其他形式显示它 所以,这就是代码 private void nextActivity(Profile profile){
我有一个付费应用程序,安装后用户可以使用购买该应用程序的电子邮件地址进行注册。 我想知道这个电子邮件地址是否从Google Play购买了我的应用(验证),否则拒绝其注册。有什么办法(API)? 最佳
我是一名优秀的程序员,十分优秀!