首页 >> 中国网络传播网文章管理系统 >> 网络安全知识 >> 正文
网页编程安全漏洞全接触
不一定全部要这样,可以根据自己留言、或者论坛的性质来决定那些需要严格过滤。
三、攻击实例
以下的实例,可能网络上有些网站刚好存在这些问题,希望存在问题的网站能够及时修改程序改正,读者也不要利用这些漏洞做不符合国家法律法规的事情。
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”账号,再看看这个页面的源代码,查找这个账号,看这个账号出现在哪些地方,我们只看关键的代码:
|
·上一篇文章:警惕!针对Windows系统的大规模攻击即将到来 |
·下一篇文章:知己知彼百战不殆 黑客入侵电脑四条途径 |
相关新闻