Eli*_*ias 8 html javascript security ajax
给出以下场景:我们有一个用于更改帐户密码的html表单.它看起来像这样:
CurrentPassword: __________________
NewPassword: __________________
NewPasswordAgain: __________________
Run Code Online (Sandbox Code Playgroud)
我们想通过ajax调用发送此请求.如果我们发送它并且我们离开我们的计算机(没有注销并停留在完全相同的页面上),有人可以打开webkit检查器(或firebug)并看到如下内容:
http://cl.ly/3y213W1q0U2y2e251k0O
什么是让你更安全的解决方案?甚至可以在这里使用ajax调用,还是最好使用"正常"的html表单,在发送后重新加载整个页面?
使用"普通"html表单具有相同的问题,因为数据包嗅探可以轻松地在POST或GET标头中显示相同的数据.
我能想到的最好的解决方案是通过javascript加密密码用户端.你真的不必担心"如果用户禁用了javascript怎么办?" 因为,在这种情况下,AJAX请求也不会通过.显然,这可能会对您如何存储密码产生影响,但它允许您继续使用AJAX请求进行密码更新.
作者在这里对加密连接不感兴趣。他可能已经在这样做了。他想要的是能够对任何有权访问计算机的人隐藏密码(和用户名),并且可以打开检查器工具来查看页面上发生的网络情况。
您可以做的最简单的事情之一就是刷新页面,以防身份验证成功。
您应该做的事情是每当用户按下“注销”时刷新页面。这应该会清除所有以前的网络数据。
不太好的选择是在发送密码之前对密码进行加密、混淆和散列处理。
在客户端对密码进行哈希处理并不理想,因为这会阻止在服务器端使用带有密钥的哈希密码(例如 HMAC)。HMAC 密码是最好的,因为密钥保存在文件系统上,而盐保存在数据库上。破解密码哈希需要对系统进行相当可靠的访问。
密码的混淆和加密是可以逆转的。如果有人在 Webkit Inspector 上看到登录请求,他可能很有兴趣花时间来解除您的防御。
我强烈建议在某个时候刷新页面,以完全避免该问题。其他选择似乎不太好。
| 归档时间: |
|
| 查看次数: |
3651 次 |
| 最近记录: |