14

当他们在我们的网站上注册时,您对将用户名和密码发送到他们的电子邮件地址有何看法。这样,如果他们将来忘记密码,他们可以在他们的电子邮件中查找它......我们也不必实施忘记/重置密码场景(我们即将发布)..

这种方法足够安全吗?

  1. 我的第二个问题是,基本上在我们的网站上,用户填写某些表格并输入一些信息,例如他们的姓名、地址、电话号码、收入信息和此类个人信息……最后,当他们提交申请时,我们在想通过电子邮件向他们发送所有这些信息的摘要,例如他们的姓名、地址等,以便他们记录下来。

这可以吗..足够安全..有什么问题

4

12 回答 12

25

切勿以明文形式发送密码或其他敏感信息。这包括电子邮件。您还应该以可恢复的格式尽可能少地存储这些内容。未加密的通信,尤其是电子邮件,很容易被篡改,而且您不希望错误的人获得密码。

如果可能的话:

  • 将您的密码存储在加盐哈希中,因此原始文本是不可恢复的,因此不会被任何暴力攻击所破坏。如果用户忘记了他/她的密码,让他们重置密码并通过电子邮件发送一个临时密码(他们需要在登录时更改)或确认链接(再次提示输入新密码)。

  • 切勿通过电子邮件发送任何敏感信息;如果用户需要信息,让他们去您的网站获取信息。您使用的是 HTTPS,对吗?

于 2009-07-01T15:25:41.123 回答
5

人们经常跨站点共享密码。因此,您应该假设客户的网上银行使用相同的密码,并且您永远不应该通过电子邮件发送它或为(假装是)客户提供检索它的方式。

可以向他们发送带有用户名的确认电子邮件 - 这很有用。

请记住,如果您将密码通过电子邮件发送给他们,他们可能会忘记该电子邮件,或者只是将其删除。因此,无论如何您都需要另一种密码重置机制。

处理“忘记密码”情况的最佳方法是用户要求您通过电子邮件向用户发送链接;当他们单击链接时,您允许他们输入新密码。

关于个人信息(地址、收入等):为什么有人希望将其邮寄给他们?他们已经知道了!您只是无缘无故地通过互联网发送未加密的私人数据。

于 2009-07-01T15:27:13.240 回答
4

我的经验法则是——如果你可以把它写在明信片上并通过邮件发送,那么标准电子邮件就可以了。对于大多数人来说,我认为收入信息不会属于该类别。

至于密码,如果他们一开始就记不住,他们将无法找到您发送给他们的包含密码的电子邮件,这是对明文存储的承认。我会避免它并给他们重置的方法——无论如何他们都需要这样做。

于 2009-07-01T15:24:52.497 回答
2

当您通过电子邮件发送任何信息时,它是不安全的。有太多方法有人可以得到它。对于想要窃取您的信息的熟练黑客来说,这将是小菜一碟。

避免通过电子邮件发送任何个人信息,例如密码和收入信息,因为如果此类信息被泄露或被盗,可能会让您和您的组织感到非常尴尬。认真考虑安全问题。只需要一个事件就可以让所有的砖块都掉下来。

至于密码找回,请通读Forgot Password Best Practices

最重要的是,遵循最佳实践的应用程序应该允许用户重置自己的密码。应使用个人安全问题。应用程序不应发送电子邮件、显示密码或设置任何临时密码。

编辑:更新链接...

于 2009-07-02T13:57:42.673 回答
2

问题肯定在于发送带有密码的电子邮件。如果未正确加密,则有人可能会从正在发送的电子邮件中嗅出数据包并恢复密码。此外,此人可能拥有被劫持的电子邮件帐户。如果有人窃取密码不是什么大问题,那么您可能不必担心,否则我不会通过电子邮件发送任何未加密的密码。

编辑:为了解决您的第二个问题,我什至不会通过电子邮件发送。相反,我会发送一个链接,以便他们在登录时可以轻松查看他们的个人资料/信息。

于 2009-07-01T15:19:11.620 回答
2

我告诉人们把电子邮件想象成一张明信片——在发件人和收件人之间处理它的任何公司的员工都可以阅读它。

于 2009-07-01T15:29:03.847 回答
2

我同意最佳答案,并补充一点:每次我收到一封包含我的密码的注册确认电子邮件时,我都会删除该电子邮件并强烈考虑不再使用该网络服务。对我来说,这表明缺乏安全和隐私意识。

于 2011-06-29T21:44:16.803 回答
1

由于外部电子邮件客户端的安全性,大多数公司根本不包括用户名密码组合。任何数量的用户都可以暴力破解或猜测其他用户的电子邮件帐户的密码,这将允许黑客查看您网站的电子邮件。然后黑客也可能对您的网站造成严重破坏

于 2009-07-01T15:21:17.340 回答
1

我想说提供忘记密码的功能仍然很重要,因为不是每个人都可以保证保留所有电子邮件(甚至以后可以找到它们)......

于 2009-07-01T15:23:13.327 回答
0

我有关于密码的三个规则:

  • 不要在数据库中以纯文本形式存储密码
    • 人们为什么要相信你提供这种信息?你可能只有善意,但大公司以前失败过,所以你也有风险。
  • 不要使用密码提醒
    • 密码提醒是不值得的。他们很容易从你的随行人员那里猜到,你经常忘记他们。有更好的方法来重置密码。
  • 始终提供通过电子邮件发送新密码
    • 这是检索密码的最安全方法。您应该强制用户在使用新密码登录后更改密码。
于 2009-07-02T14:04:16.407 回答
0

如评论中所述,您可能想查看 OpenID。管理密码最安全的方法是消除它们。

于 2009-09-26T16:39:46.130 回答
0

我构建了一个 Web 应用程序来通过电子邮件发送敏感信息。它不是完美的 UI,但它真的很安全并且工作得很好。

有一个outlook插件,API来连接外部网站和网站。

这个概念是在您的邮箱中收到的消息不是明文。这是一封带有链接的 HTML 电子邮件。您需要单击该链接才能访问电子邮件的内容。当它被访问一次时,消息被销毁。

该消息存储在我们这边的加密数据库中。您可以配置一个只有两部分知道的密码来在线打开消息,或者通过短信接收密码(随机6个数字)。

通过 API 实现非常简单。

有一个样本

// https://www.secure-exchanges.com/API.aspx

 List<string> files = new List<string>();
  files.Add(originalFilePath);
  string input = $"{body}";
  string inputSubject = $"Your {subject}";
  SendMessageAnswer answer = MessageHelper.EncryptMessage(new EncryptMessageArgs(GlobalSettings.bindingSecure, GlobalSettings.serial, GlobalSettings.ApiUser, GlobalSettings.ApiPassword, input, inputSubject + " - to open", recipient1, "", password, null, SecureExchangesSDK.SecureExchanges.SendMethodEnum.onlyEmail, false, true, true, "fr-CA", 1, 5)
  {
    FilesPath = files
  });
  if (answer == null || answer.Status != 200)
  {
    throw new Exception($"Impossible d'envoyé un message : {methodName}");
  }
于 2016-05-14T01:58:08.930 回答