胖客户端会话管理和安全

Thick client session management and security

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

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

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

I create the user at the database level and my thick client app will authenticate with database using the provided user id and password. Is this method safe enough?

可以,前提是你做到以下几点:

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

or do I need a real session/password management api to do this?

不是真的。

How do I keep sessions in a thick client app like this?

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

Also, if I want to encryption traffic between my app and the database server, should i just use JSSE or similar?

是的。

Is there a way to encrypt data instead of the communication channel?

数据库可以加密功能

I believe my database server need to also be able to decrypt my encrypted data?

什么加密数据?如果你指的是通过 SSL 传输的东西,它会自动解密。