| |
用户口令保护新招
|
日期:2005年7月3日 作者:清风网络学院
查看:[大字体 中字体
小字体]
|
经常有读者询问,如何在其站点上使用JavaScript,以确保用户登录时的口令不会外泄。对于这样的问题,我的第一反应就是告诉他们使用SSL(安全套接字协议层)。如使用正确,SSL对于安全要求较高的Web应用是最佳的解决方案。但是,也有相当一部分开发者,他们的Web应用对安全性的要求并不高,因此他们并不希望访问者使用SSL 登录。
Web应用一般使用一种叫做“会话状态管理”(Session State Management) 的技术来追踪和管理浏览器与服务器之间的相互活动。因为每个浏览器的浏览要求相对于其他浏览器都是独立的(正如超文本传输协议中定义的那样),所以Web 应用必然使用某些技巧,如Cookie、隐藏表格字段、或重写URL,它们可以识别出服务器与某个浏览器进行的独立会话。大多数的服务器端编程环境(如 ASP、PHP、ColdFusion等)都使用Cookie。
会话状态管理的问题在于从根本上讲它是不安全的。这些被用来管理会话状态的Cookie、表单值、或URL要在浏览器和服务器之间往来传送,黑客可以在途中拦截它们。一旦拦截成功,黑客就可以利用这些信息强行接管用户会话。
在大多数服务器端脚本编写环境里,你都可以采取一些措施以减少此类泄密的发生。例如,你可以为Cookie设定很短的使用期限,应用“难预期会话状态”信息。然而,最安全的解决方案还是使用SSL。使用SSL,不论用户口令,还是会话状态信息都会受到保护。
如果你不使用SSL,那么可以要求用户对你的应用中的每个敏感页进行重新认证。但是,从用户的角度来讲,这种方式未免太过麻烦。总之,你必须清楚你和你的用户究竟愿意承担多高的风险。如果口令泄露的风险过高,你就需要使用SSL建立应用。如果你不能使用SSL,可以采用基于MD5的登录方式作为代替。它至少可以保护你的用户的口令免于外泄。另外,再选用一种可以防止会话状态信息被窃的服务器端脚本编写技术。
通常,如果一个用户不使用SSL登录(即原来的HTTP),那么从离开浏览器直到到达目标网络服务器的这段时间里,用户口令都处于无保护的暴露状态,正如下页中的图表所示。
不过,我们可以利用一种不可逆的函数开发一种登录方案,利用这种方案就不会暴露用户的口令。函数是集合的元素之间的一种对应关系,在从集合A 到集合B的函数中,A中每个元素在B中都有一个唯一的元素与之相对应。不可逆函数在计算上很难逆转——即给定集合B中的一个元素,很难确定在集合A中的哪个元素与之相对应。
这好比是一台碎纸机。把文件放入碎纸机中销毁是很容易的。但是反之,如果要把销毁后的碎纸屑重新拼凑成原文可就难上加难了。
采用MD5解决方案
当今最流行的不可逆函数应用程序之一就是由Ronald Rivest开发的MD5算法。Ronald Rivest还是著名的RSA(Rivest,Shamir,Adelman)加密算法的开发者之一。MD5算法能为任何长度的信息生成一个16字节 大小的“数字指纹”。这个信息可以是一个字符串、一个文件、一个文本流或任何其它形式的字节序列。在RFC1321中有MD5算法的详细描述。
我们要开发一种使用MD5算法的登录方式,用以保护从一个浏览器发送至网络服务器的用户口令。
当一名用户对某个网络应用提出登录请求时,其网络服务器就会提供给用户一个登录表格。这是一个带有随机生成值的表格。其中的随机生成值由服务器端脚本从一个数亿记的取值空间中随机选取生成。 <img src="/UpLoadFiles/NewsPhoto/esastep1.gif">
用户在登录表格中输入他或她的用户名和口令,用户端脚本给口令附加一个随机值,然后用MD5不可逆算法对结果进行计算。再用计算得出的值代替原口令。我把这个值称为MD5口令。
最后,用户端脚本把用户名和这个MD5口令发送到网络服务器。因为在浏览器与服务器之间传送的是MD5的运算结果,所以任何人都无法通过计算得出用户所输入的原始口令。 <img src="/UpLoadFiles/NewsPhoto/esastep2.gif">
网络服务器在接收用户名和MD5口令后,会执行与用户浏览器相同的运算。它给用户口令(从服务器的被保护区域中提取)附加上随机值(即已发送给用户的随机值),并计算出正确的MD5口令值。然后网络应用程序把这个值和它从浏览器收取的值相比较。如果两值相等,网络应用程序就会生成一个服务器端会话变量,证明此用户身份正确。 <img src="/UpLoadFiles/NewsPhoto/esastep3.gif">
上一篇:php显示网址物理地地址
下一篇:动态域名基础知识
|
| 用户口令保护新招 相关软件: |
用户口令保护新招 相关文章: |
|
|
|
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.abcdown.net
| |