猿问

开发网站登录功能时,如何保证密码在网络传输过程中的安全?

在网站的登陆中,如果不做处理,那么用户名和密码将会在post表单中以明文的方式通过http传递给server。如果http请求被截获,那岂不是意味着用户名和密码的泄漏?如何避免这个问题?

梦里花落0921
浏览 1816回答 2
2回答

忽然笑

HTTPS是让请求~~截获不了~~(叙述不准确,其实也是截获了没有用)。客户端混淆是截获了没有用。从截获了没有用的思路上说,简单的单向Hash确实意义不大,攻击者伪造一模一样的POST(重放攻击)就能成功登陆。所以要使用加盐(SALT)Hash。服务器发送给客户端的登陆页面里嵌上一个一次性且有时效性的字符串Salt,客户端在传回密码时将Salt和密码连接在一起进行Hash再提交。这样客户端每次登录,由于获取到的Salt不同,产生的Hash值也不同,且登录后本次使用的Salt/Hash值立刻作废,攻击者无法通过重放截获的信息登录。但是仍然并不是真正的安全:攻击者可以拦截客户端的登录请求使之不能到达服务器,然后自己提交拦截的登录请求,从而以用户的身份登录。(也算是中间人攻击了吧)但是好像HTTPS也不能完全保证抗中间人攻击的,所以大概也就这样了。
随时随地看视频慕课网APP
我要回答