通过以上的学习对身份验证程序的基本思路以及详细代码做了分析,应该说在网络应用系统建设过程中,身份验证程序使用的方法基本相同,只是在安全性和程序代码的缜密性上有所不同,下面来介绍以上身份验证代码存在的安全隐患。
2 网络身份验证存在的安全隐患及解决方法
初学者认为上面的身份验证程序在服务器中能够正确地调试运行,就高枕无忧了,但这是错误的想法,黑客就是通过这样没有设置任何安全机制的程序来对系统及服务器进行攻击的。
2.1 利用附加码技术防止身份验证的穷举破解
在网络上,附加码技术的应用主要阻挡利用HTML页面提交的穷举法进行页面攻击。附加码在Web服务器上随机产生并记下来,再生成文字传给用户,用户照着手动输入提交,服务器对提交的附加码与记下来的附加码对比一下正不正确就完成了验证。因为每一次产生的附加码都是随机的,所以确保穷举法失效,下面来分析一下附加码形式。
(1)如果返回的附加码以文本形式返回,这是无效的附加码。攻击者简单提取文本附加码自动填上就可以了。这种附加码对安全一点帮助都没有,反而加大了用户的输入负担。 (2)以图片方式返回附加码,这才算是真正有效的附加码。因为图片是以点的方式而不是字符方式呈现给用户的,攻击者就不能直接读到附加码,这种方法很有效。
由于以图片方式返回附加码技术代码十分复杂,在这里由于篇幅的原因就不对附加码技术进行详细的代码说明了,下面给出几个附加码技术的网络资源,读者可以看到实例,也可以解读详细的代码说明。
2.2 利用用户锁定的方法防止身份验证破解
利用这种方法也能够防止穷举法进行系统攻击,主要思想就是在用户输入口令错误到一定次数,就采用一段时间用户锁定的方法,禁止错误口令的继续输入,实例数据库为上文用户表,主要代码如下:
login.asp
<form method="POST" action="loginok.asp">
<p>
用户名:<input type="text" name="name" size="20"></p>
<p>密码:<input type="password" name="pwd" size="20"></p>
<p> <input type="submit" value="提交" name="B1">
<input type="reset" value="重置" name="B2"></p>
</form>
|