2009-10-09 98 views
4

我的大学有一个门户网站供学生注册课程。如果你想进入一个完整的课堂,你必须不断检查门户网站,并在课堂开放时注册。可以安全地存储其他网站的密码吗?

我写了一个工具,它可以检查口和自动注册,但它需要的学生的大学用户名和密码。这些密码与电子邮件帐户,网络共享,服务器登录和大多数其他大学服务相关联。

有什么办法可以安全地做到这一点?

回答

1

不幸的是,这是不是真的有可能 - 至少不是你想要做的方式 - 除非该大学提供了一个基于密钥的验证API。你总是可以很好地问他们,但他们可能太忙而无法提供帮助。如果您为用户提供充分的信息披露并保证服务器的安全,那就足够了。

其实,有做它通过网络不存储密码的一种方式 - 您可以使用Java或Flash应用程序。不幸的是,您的用户需要在应用程序完成工作时将浏览器保持打开状态,但这样您就不需要存储信息。

+0

我想我甚至可以让他们下载一个可以在后台运行的客户端。 我认为完全披露和一般安全是要走的路。它将在我的slicehost帐户上运行,我认为它应该相对安全。 – ABentSpoon 2009-10-09 22:07:43

0

当您存储它们,然后对它们进行解密,当你需要尝试登录。简单地生成一个对称密钥,并用它来加密和解密密码的存储和检索(分别)你可以加密的口令字符串。

+1

你在哪里存储密钥? – 2009-10-09 21:45:55

+1

我可以,但解密代码不会与加密密码一起坐在我的服务器上吗? – ABentSpoon 2009-10-09 21:46:15

+0

@ABentSpoon:Martin声称存储加密密码(以及加密密钥)不仅仅比存储密码更安全 - 他是对的。是的,你不能“隐藏”你的解密代码 - 算法是很好理解的。 – 2009-10-09 22:15:41

0

您不能存储它们完全安全的,因为你需要能够进行加密和解密,从而单向散列算法,如MD5,SHA-1,SHA-2是不够的。你可以看看诸如DES或Triple-DES加密之类的东西。

+0

那么你在哪里存储DES或Triple-DES的对称密钥? – 2009-10-09 21:50:24

+0

好问题。这就是为什么我说这不是完全安全。 – 2009-10-09 21:55:55

+0

我想说,用另一个密码加密密码根本不能提高安全性。 – 2009-10-09 21:58:49

3

在安全性方面,最重要的是“threat model”。你害怕什么样的攻击?

  • 有人可能会窃取运行此程序的计算机:将计算机置于锁定的房间中。
  • 有人可能入侵计算机并从内存中读取它:使用防火墙和其他防御远程攻击的保护
  • 其他用户可能会读取存储密码的硬盘:仅将密码存储在内存中(这将需要重新存储每次启动程序时)
  • 超级用户-entering它可以读取,即使是在内存中的密码:只有在你信任的超级用户的计算机上运行程序。

+0

将加密密钥存储在内存中听起来像是个不错的主意。我不确定它会提供多少额外的安全性,但它至少会让攻击者绊倒一段时间,或许足够长的时间来检测攻击并停止服务。 – ABentSpoon 2009-10-09 22:14:47

+0

如果您需要重新启动服务,那么您将无法解密密码。这是我看到的最大的问题,而不是缺乏安全性。 – 2009-10-09 22:53:11

0

我不认为有。正如马丁指出的一种加密方式不会为你做。此外,这将为您创建一个维护噩梦 - 每次用户更改密码时,您都必须更新数据。

我认为要使它真正起作用,你必须改变设计:找到一种方法来在没有用户密码的情况下进行注册,即与应用程序的所有者通话,如果他们会给你一个帐户,通过它你可以做代表其他人注册

相关问题