欢迎来到天天文库
浏览记录
ID:39928903
大小:77.92 KB
页数:5页
时间:2019-07-15
《用户口令保护新招》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、经常有读者询问,如何在其站点上使用javascript,以确保用户登录时的口令不会外泄。对于这样的问题,我的第一反应就是告诉他们使用SSL(安全套接字协议层)。如使用正确,SSL对于安全要求较高的Web应用是最佳的解决方案。但是,也有相当一部分开发者,他们的Web应用对安全性的要求并不高,因此他们并不希望访问者使用SSL登录。 Web应用一般使用一种叫做“会话状态管理”(SessionStateManagement)的技术来追踪和管理浏览器与服务器之间的相互活动。因为每个浏览器的浏览要求相对于其他浏览器都是独立的(正如超文本传输协议中定义的那样),所以Web应用
2、必然使用某些技巧,如Cookie、隐藏表格字段、或重写URL,它们可以识别出服务器与某个浏览器进行的独立会话。大多数的服务器端编程环境(如ASP、PHP、ColdFusion等)都使用Cookie。 会话状态管理的问题在于从根本上讲它是不安全的。这些被用来管理会话状态的Cookie、表单值、或URL要在浏览器和服务器之间往来传送,黑客可以在途中拦截它们。一旦拦截成功,黑客就可以利用这些信息强行接管用户会话。 在大多数服务器端脚本编写环境里,你都可以采取一些措施以减少此类泄密的发生。例如,你可以为Cookie设定很短的使用期限,应用“难预期会话状态”信息。然而,
3、最安全的解决方案还是使用SSL。使用SSL,不论用户口令,还是会话状态信息都会受到保护。 如果你不使用SSL,那么可以要求用户对你的应用中的每个敏感页进行重新认证。但是,从用户的角度来讲,这种方式未免太过麻烦。总之,你必须清楚你和你的用户究竟愿意承担多高的风险。如果口令泄露的风险过高,你就需要使用SSL建立应用。如果你不能使用SSL,可以采用基于MD5的登录方式作为代替。它至少可以保护你的用户的口令免于外泄。另外,再选用一种可以防止会话状态信息被窃的服务器端脚本编写技术。 通常,如果一个用户不使用SSL登录(即原来的HTTP),那么从离开浏览器直到到达目标网络
4、服务器的这段时间里,用户口令都处于无保护的暴露状态,正如下页中的图表所示。 不过,我们可以利用一种不可逆的函数开发一种登录方案,利用这种方案就不会暴露用户的口令。函数是集合的元素之间的一种对应关系,在从集合A到集合B的函数中,A中每个元素在B中都有一个唯一的元素与之相对应。不可逆函数在计算上很难逆转——即给定集合B中的一个元素,很难确定在集合A中的哪个元素与之相对应。 这好比是一台碎纸机。把文件放入碎纸机中销毁是很容易的。但是反之,如果要把销毁后的碎纸屑重新拼凑成原文可就难上加难了。采用MD5解决方案 当今最流行的不可逆函数应用程序之一就是由RonaldRi
5、vest开发的MD5算法。RonaldRivest还是著名的RSA(Rivest,Shamir,Adelman)加密算法的开发者之一。MD5算法能为任何长度的信息生成一个16字节大小的“数字指纹”。这个信息可以是一个字符串、一个文件、一个文本流或任何其它形式的字节序列。在RFC1321中有MD5算法的详细描述。 我们要开发一种使用MD5算法的登录方式,用以保护从一个浏览器发送至网络服务器的用户口令。 当一名用户对某个网络应用提出登录请求时,其网络服务器就会提供给用户一个登录表格。这是一个带有随机生成值的表格。其中的随机生成值由服务器端脚本从一个数亿记的取值空间
6、中随机选取生成。 用户在登录表格中输入他或她的用户名和口令,用户端脚本给口令附加一个随机值,然后用MD5不可逆算法对结果进行计算。再用计算得出的值代替原口令。我把这个值称为MD5口令。 最后,用户端脚本把用户名和这个MD5口令发送到网络服务器。因为在浏览器与服务器之间传送的是MD5的运算结果,所以任何人都无法通过计算得出用户所输入的原始口令。 网络服务器在接收用户名和MD5口令
7、后,会执行与用户浏览器相同的运算。它给用户口令(从服务器的被保护区域中提取)附加上随机值(即已发送给用户的随机值),并计算出正确的MD5口令值。然后网络应用程序把这个值和它从浏览器收取的值相比较。如果两值相等,网络应用程序就会生成一个服务器端会话变量,证明此用户身份正确。 说到这里,你也许会置疑使用随机值的必要性。其实,这个随机值是用来防止再度攻击的。如果只有原始用户口令通过MD5,那么相应得出的MD5口令就会总是同一个值。黑客只要截获MD5口令就同样可以登录进入网络应用
8、。使用了随
此文档下载收益归作者所有