网页编程安全漏洞全接触
来源:网络 作者:佚名
可能我们认为以上的情况很简单,的确简单,但是这种方式编程的程序员却很多,随便在网上找,我们可以找到很多这种方式编程的源代码和已经采用的程序。
以上就是就是页面行为方式缺乏逻辑的典型举例,还有没有其他的举例呢?我们大家都很熟悉的一个例子。在电子商务初期,一些电子商务网站的程序很多存在这样的漏洞,用户可以随意定义自己购买商品的价格!其实也就是这个原因造成的。
3、编程方式不成熟
很多时候,我们可能根本没有意识到一些漏洞的产生,这时候,不是我们没有注意安全问题,而是我们缺少经验。这种情况,我们就需要多了解一些网络攻击者的进攻方式,以此来修改程序,加固网络、程序安全。我们已经知道的一些漏洞就是这种情况产生的。在一些账号密码验证中,有万能密码的存在就是这样产生的,在下面的举例中我们会详细介绍。
4、没有基于内容的检测
上面第一条我们提到检测的漏洞,这里,我们专门提出基于内容的检测。前面多是技术上的考虑,这里,确实基于国家法律法规的考虑。一个网站的设计完成,除了技术的完善以外,还需要这个网站在国家法律法规内发布信息,不能随意让自己的网站成为一些别用心的人发布不法信息的平台。所以 ,我们有必要对所有用户输入而且有可能显示给其他用户的信息进行内容检测,一般有几类:
(1)粗话的检测,一般我们检测一些常见的粗话;
(2)敏感词汇的检测,必然“法轮”“明慧”等这些词;
(3)关系政治的词汇,最好全部过滤,比如“共产党”等;
(4)国家领导人的姓名,最好过滤;
当然,以上的一些规则,不一定全部要这样,可以根据自己留言、或者论坛的性质来决定那些需要严格过滤。
三、攻击实例
以下的实例,可能网络上有些网站刚好存在这些问题,希望存在问题的网站能够及时修改程序改正,读者也不要利用这些漏洞做不符合国家法律法规的事情。
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语句,找出可能的漏洞。
·上一篇文章:研究发现92%网站程序可能遭到黑客攻击
·下一篇文章:干干净净:让流氓软件彻底滚出你的系统
转载请注明转载网址:
http://www.jmkt.cn/html/netaq/20285568.htm
相关内容