【问题标题】:Thick client session management and security胖客户端会话管理和安全性
【发布时间】:2015-06-01 12:56:10
【问题描述】:

我想开发一个胖客户端应用程序(而不是使用 jsp/服务器端),我将在启动我的应用程序时提供一个登录面板。我不确定这是否是正确的方法(就安全性而言),所以想要一些 cmets。

身份验证将通过后端数据库进行。也就是说,我在数据库级别创建用户,我的胖客户端应用程序将使用提供的用户 ID 和密码对数据库进行身份验证。这种方法足够安全吗?还是我需要一个真正的会话/密码管理 api 来做到这一点?

如何在这样的胖客户端应用程序中保持会话?另外,如果我想加密我的应用程序和数据库服务器之间的流量,我应该只使用 JSSE 还是类似的?有没有办法加密数据而不是通信通道?我相信我的数据库服务器也需要能够解密我的加密数据。

【问题讨论】:

  • 我可以看到你在这里问了 5 个问题。也许你应该完善你想要的东西。

标签: java authentication ssl encryption passwords


【解决方案1】:

我在数据库级别创建用户,我的胖客户端应用程序将使用提供的用户 ID 和密码对数据库进行身份验证。这种方法够安全吗?

可以,前提是您执行以下操作:

  1. 在数据库中散列密码,而不是加密它。
  2. 通过查询数据库SELECT count(*) FROM USERS WHERE USERNAME=? AND PASSWORD=MD5(?) 或您使用的任何散列算法来验证用户。请注意,此技术故意不告诉您用户名或密码是否错误,以避免将该信息泄露给攻击者的任何可能性。这个想法是它返回 1 或 0。

或者我需要一个真正的会话/密码管理 api 来执行此操作吗?

不是。

如何在这样的胖客户端应用中保持会话?

如果您指的是在登录之间持续存在的会话,请将其保存在数据库中。如果您只是指在登录和注销之间持续的会话,请将其保存在注销时释放的对象中。

另外,如果我想加密我的应用程序和数据库服务器之间的流量,我应该只使用 JSSE 还是类似的?

是的。

有没有办法加密数据而不是通信通道?

数据库可以通过加密功能做到这一点。

我相信我的数据库服务器也需要能够解密我的加密数据?

什么加密数据?如果您的意思是通过 SSL 传输的内容,它将被自动解密。

【讨论】:

    猜你喜欢
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多