Apache flex 如何在Flex ChannelSet.login期间保护凭据?

Apache flex 如何在Flex ChannelSet.login期间保护凭据?,apache-flex,security,spring-security,blazeds,credentials,Apache Flex,Security,Spring Security,Blazeds,Credentials,我刚刚想到,当我的Flex应用程序执行ChannelSet.login时,它实际上是以未加密的形式通过网络将用户名和密码发送到BlazeDS服务器。当我在AMF通道上使用二进制AMF协议时,任何人都不需要嗅探这些密码 我的大多数客户端不希望在受https(SSL)保护的站点上运行其应用程序。那么最好的方法是什么呢?我在后端使用Spring安全性进行身份验证 我应该在调用login之前自己加密凭据吗?我想我需要知道服务器端加密算法 想法?如果没有SSL,您只能求助于客户端和服务器之间的共享加密技术

我刚刚想到,当我的Flex应用程序执行ChannelSet.login时,它实际上是以未加密的形式通过网络将用户名和密码发送到BlazeDS服务器。当我在AMF通道上使用二进制AMF协议时,任何人都不需要嗅探这些密码

我的大多数客户端不希望在受https(SSL)保护的站点上运行其应用程序。那么最好的方法是什么呢?我在后端使用Spring安全性进行身份验证

我应该在调用login之前自己加密凭据吗?我想我需要知道服务器端加密算法


想法?

如果没有SSL,您只能求助于客户端和服务器之间的共享加密技术。在这种情况下,您可以在BlazeDS中实现自定义LoginCommand,该命令将解密传入的加密用户名/凭据,以便在服务器端使用

还有其他技术(SSO、预身份验证、会话密钥),但是如果您的客户机不愿意购买SSL,或者准备强迫其用户使用自签名的Selg签名SSL证书,那么我怀疑他们是否会选择其他方法

如果您担心用户名/密码被压缩,那么在使用带有用户名/密码的ChannelSet.login时,最低要求是SSL


在我看来,一个很好的解决方案是使用用户名/密码通过HTTPS登录,它会发出会话密钥,然后您可以通过HTTP使用用户名/会话密钥来检查即将到来的非安全请求是否来自经过身份验证的用户。sessionkeys在任意时间后超时。

如果您使用Java,最好的方法是使用Spring安全性


在英语中

看起来共享加密是一种方式。可能会将用户名用作salt。我知道没有办法阻止一个坚定的黑客,但任何东西都比什么都好。这是一篇很好的文章,但是作者的代码受到了这个问题所带来的同样致命的安全缺陷的困扰。他的Flex客户端将未加密的用户名和密码发送到SpringSecurity后端进行身份验证。这个解决方案是微不足道的。这就像有一个巨大的防弹保险箱,保险箱的密码写在贴在门上的便条上!