我正在编写一套应用程序,它们都需要登录到服务器。它很好地结合在一起,但我遇到了一个逻辑上的障碍。应用程序的性质要求它们被关闭,并在以后以一定的频率再次启动。每次需要启动一个应用程序时都要登录,这是非常烦人的。
我正在尝试一种安全的方式,也许可以将登录信息存储在本地用户的机器上。有没有一种好的方法来解决这个问题呢?权限保护配置文件?注册表?Firefox如何存储其密码?你有没有做过这样的事情?
该套件更像是一种协议,所有的应用程序都是用各种语言(Python、C#、Java等)编写的,并在各种操作系统(Windows、Linux、OSX等)上运行。我实际上并不是在寻找代码示例,而是更多地寻找解决这个问题的通用方法。在本地存储密码是否明智?您如何才能拥有一个包含这些完全不同组件的套件的会话登录呢?现在,我使用本地存储到每个应用程序的application.rc配置文件,但它们是纯文本,而且很不安全。
发布于 2009-05-18 17:08:03
在这个问题上,我同意Jeff的观点,假设既然您提到了注册表,那么您指的就是Windows。我还假设您谈论的是桌面应用程序(否则,您可以只使用内置浏览器cookie来存储用户的会话)。
我不假思索地设计了这个应用程序,以便当用户登录到服务器时,服务器返回一个唯一的会话id来标识经过身份验证的用户。然后,我会将than id与一个加盐/加密的时间戳一起存储(这为您提供了使缓存的凭证过期的选项)。
存储机制由您决定。您可以将它们存储在Windows注册表的HKEY_LOCAL_USERS部分中,或者存储在windows的Application Data文件夹中。两者都为您提供了用户分段存储的选项。
发布于 2009-05-18 17:04:21
通常,这类事情是通过使用“cookie”来完成的;“cookie”是一个密钥,它(安全地)指示用户先前已成功登录到服务器资源。这是大多数网站管理登录信息的方式,Firefox (实际上是所有浏览器)存储浏览器在用户登录时设置的cookie。关于cookies有几件重要的事情:cookies应该加密,以确保恶意程序不会生成cookies,从而绕过登录过程,它们应该与服务器保留的资源相匹配(原因相同),并且它们应该过期,因此,虽然您可以在站点上保留一段时间的登录信息,但您的登录信息不是永久的(这是另一个安全漏洞)。
发布于 2009-05-18 17:08:53
就我个人而言,我会使用加密的本地配置文件和机器的某种ID值(主板ID、芯片ID、硬盘ID等)作为加密密钥的一部分,这样配置文件就不能从一台机器复制到另一台机器。我还会包括日期和时间,这样当你决定它变得陈旧时,你就可以让它过期。
或者,您可以创建一个执行登录的主机exe或启动器,然后在每次要启动新应用程序时进入睡眠状态并唤醒它。主机exe会将应用程序作为参数,并决定是否要求提供登录凭据(通常在第一个应用程序启动时),然后将登录用户和加密密码保存在内存中。当主机exe退出时,登录信息会被遗忘,当您重新启动时,该周期将重新开始。)
https://stackoverflow.com/questions/878722
复制相似问题