网页编程安全漏洞全接触

首页 >> 中国网络传播网文章管理系统 >> 网络安全知识 >> 正文

网页编程安全漏洞全接触

来源:『计算机世界网』   文章作者:喻凯


不一定全部要这样,可以根据自己留言、或者论坛的性质来决定那些需要严格过滤。

三、攻击实例
以下的实例,可能网络上有些网站刚好存在这些问题,希望存在问题的网站能够及时修改程序改正,读者也不要利用这些漏洞做不符合国家法律法规的事情。

1、万能密码
这个漏洞,一些读者可能已经知道,但是,由于网络上依然很多网站存在这些漏洞,我们还是有必要详细、全面的了解这个漏洞的形成原因和严重后果。首先,我们来看看漏洞的产生。这个漏洞是因为在程序验证账号密码的时候程序不严谨造成的。我们在程序设计的时候,常常将账号、密码放在一个叫“User”的数据表中,设置“username”和“password”两个字段,当验证的时候,检查用户的输入是否存在于这个数据表,如果存在,证明这个用户合法;不存在,证明用户不合法。漏洞的出现,就是这个验证代码的编写不严谨造成的,我们来看原代码。

‘连接数据库
Set Conn=Server.CreateObject("ADODB.Connection")
Connstr="DBQ="+server.mappath("db\\news.mdb")+"DefaultDir=;DRIVER={Microsoft Access
Driver (*.mdb)};DriverId=25;FIL=MS Access;ImplicitCommitSync=Yes;MaxBufferSize=512;
MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UserCommitSync=Yes;"
‘打开数据库连接
Conn.Open connstr
‘数据库选择语句
mysql="select * from user where userid=’”&txtuserid&”’ and pwd=‘”&txtpwd&” "
set rs=server.createobject("adodb.recordset")
rs.open mysql,conn,1,1

if not (rs.eof) then
rs.close
conn.close
response.redirect"ok_login.asp"
end if

在以上的代码中,我们看mysql的定义,这里的txtuserid和txtpwd都是直接来自用户的输入,如果用户构造特殊的用户名或者密码,就可以直接让这里的Select条件为“真”,完全不必理会是否有合法账号密码。我们这里不直接给出万能密码,希望有经验的读者仔细分析select语句,找出可能的漏洞。

以上漏洞的修改其实很多方法,我们这里提出几种比较完善的方法参考。首先,我们可以对用户输入的账号、密码进行严格检查,除了二十六个字母和十个数字,其他任何字符都是非法的,也就是过滤那些非法的字符,确保用户输入合法。注意,这个过滤要针对用户名和密码两个进行;二是修改以上的select语句或者下面的if语句,从程序设计角度堵塞漏洞的产生;三是检验用户的输入信息长度,限制输入信息在8个字母内,这样,也能防止漏洞的产生,不过,这个方法不是很好,最好利用第一种方法。

2、取得别人账号
这个漏洞原因已经在上面分析了,我们现在来看实例。首先,我们进入一个注册页面(图1)并且随意输入一个账号,发现出现账号已经存在的信息(图2):


这样,我们知道这个账号已经存在,怎样取得这个账号的使用权呢?我们使用另外一个账号注册,如果这个账号不存在,会出现以下的页面(图3)


以上页面,就是正常的注册页面,我们可以发现在“用户名称”后面,发现了需要注册的“kkkkkkkkk”账号,再看看这个页面的源代码,查找这个账号,看这个账号出现在哪些地方,我们只看关键的代码:

















普通会员注册



在上面的代码中,我们发现有两个hidden类型的表单项,第一个是“Step”,第二个是“recName”,从名字我们知道,第一个是注册的步骤,对我们没有意义;第二个是注册的用户名,为什么要使用“hidden”类型表单保存呢?就是为了在以下的正式注册中直接使用这个作为用户名。发现什么没有?我们可以将这里的注册名修改为我们刚才试验时候使用的注册名“andy”,然后保存为一个HTML文件,再一次打开,填写必要信息提交,结果,我们已经取得该账号的“合法”使用权。在这里需要注意的一点是,在以下语句中:

如果我们直接保存页面到本机,提交的时候会出错的,因为本机不存在member/register1.jsp文件,我们必须将这里该为正确的网址,也就是在前面加上该网站的网址才可以提交。另外,并不是所有使用这种分步验证方式注册的网站都存在这个漏洞。

3、绕过验证的“页面炸弹”
即使页面有严格的验证,有时候,我们还是可以绕过这些验证来提交一些不合法的信息,最简单的就是采用JavaScript方式验证的程序,因为JavaScript的特殊性,我们可以将提交信息的页面保存到本地计算机,然后将这些JavaScript程序删除,再提交攻击信息,这样,轻松的,我们就可以绕过页面信息验证了。

四、总结
以上我们介绍了网页编程中容易出现的一些漏洞,这些漏洞,其实并不只是在网页编程中出现,在其他的编程中,也有一定的参考价值。从以上的介绍中可以知道,安全的概念其实贯穿在整个网页设计过程中,随时我们都要考虑到安全的问题,这样,我们的网站才会多一些安全性;同样的,作为网络攻击者,如果随时注意一些编程漏洞,很容易,网站的漏洞就可以找出来。
9 7 3 1 2 4 8 :

·上一篇文章:警惕!针对Windows系统的大规模攻击即将到来
·下一篇文章:知己知彼百战不殆 黑客入侵电脑四条途径


  相关新闻

·网页设计中留白的艺术

佚名

 

·网上炒股五大安全提醒

万里

 

·网络僵尸肆虐 引发全球安全危机

刘琪莉

 

·网站排名之网页标题篇

余建祥

 

·Google的原罪--网页序列等级

Daniel Brandt

 

·搜索引擎注册技巧:网页标题

佚名

 

·网页背景设计全攻略

佚名

 

·网页制作之“事不过三”

佚名

 

·网页配色之黄金分割法

佚名

 

·网页设计中“面”的视觉构成

佚名