我有一个我尝试启动的Web应用程序(Java)。用户需要登录系统才能使用这些功能。所以这个应用程序有两个部分:
1)用户注册
2)登录
我的担心是我的方法是如何安全的从Web浏览器传输用户名/密码数据到服务器。Web身份验证 - 如何安全地将用户名/密码从客户端传输到服务器
注册
我同意这一个丢失我真的不知道如何安全地从Web浏览器向服务器发送数据。
登录
我有以下设置:
< < 客户 >> ------------------------ ------------------------------ < < 服务器 >>
[请求代理] ---- -------------------------------------------------- ------- >>
< < -------------- [从会话ID发送一个randomely生成的令牌]
[客户端计算hashedSecret = SHA1(令牌+ SHA1(密码) )]
[发送阵列:[username,hashedSecret]] --------------------------------- - >>
[服务器查询SHA1(密码)用户名数据库]
[服务器计算expectedSecret = SHA1(令牌+ SHA1(密码))]
我想知道的是如何进行安全注册[服务器与expectedSecret比较hashedSecret]用户以及我的登录是否足够安全。
谢谢
你的预期威胁是什么?如果您只关心数据包在线时的数据包嗅探,然后使用SSL并忽略您的任何想法 - 只需像使用任何Web请求一样发送用户/密码,SSL就会阻止嗅探器。 –
你为什么不使用SSL? –
HTTPS == HTTP + SSL 您的应用程序将从端口80更改为443(如果默认配置)并且将使用更多的cpu时间。但实施自己的握手逻辑也是一样。 并且是的,理论上,如果您向令牌生成添加随机盐,则您的操作是正确的。 – japrescott