网页编程安全漏洞全接触

网页编程安全漏洞全接触


来源:网络  作者:佚名



1、用户输入验证不全面
在网站编程而言,有一个规则可能我们需要牢记,那就是对于用户和用户的输入,都必须抱怀疑态度,不能完全信任。所以,对于用户的输入,不能简单的直接采用,而必须经过严格验证,确定用户的输入是否符合输入规则才可以现实、录入数据库。总结用户输入验证,应该包括以下几个方面。

(1)输入信息长度验证
这一点可能我们比较少注意,因为我们往往认为一般用户不会故意将输入过分拉长,稍微有一些用户可能捣乱,但是,在这一点上可能没有危害。其实,只要我们仔细考虑,如果不进行输入验证,可能的危害会相当大,为什么?如果用户输入的信息达到几个兆,而我们的程序又没有验证长度的话,想想的危害就有:a、程序验证出错;b、变量占用大量内存,出现内存溢出,至使服务器服务停止甚至关机。这样的危害多大?

(2)输入信息敏感字符检查
这一点平时在设计程序的时候我们可能都有注意,主要关注的是一些JavaScript的敏感字符,比如在设计留言版的时候,我们会将“<”等符号的信息去除,以免用户留下页面炸弹。但是,是否这些就已经足够了呢?还远远不够。我们还有很多没有注意到,以下几个方面我们需要特别注意。

a、留言版内容信息的过滤
这一点上面已经提到,平时也使用较多。

b、用户名信息的过滤
这一点其实我们常常验证,但是,用户名的验证我们往往只是验证长度,没有验证JavaScript或者HTML的标记,这样就容易形成漏洞。比如用户在用户名填入“

”,一般的用户名验证都可以通过,但是,显示在网页中却是很不美观的。这个输入没有破坏,但是,如果用户名验证不严,没有长度限制,后果怎样呢?这样的漏洞在网上很多!

c、Email信息的验证
Email信息我们往往也只验证是否含有“@”符号,其他没有限制,容易形成两个漏洞:一是输入信息过长的内存溢出漏洞;二是含有JavaScrript等字符信息,造成显示用户Email的时候形成页面炸弹等。

d、搜索信息的验证
搜索信息也要验证吗?当然要验证!尽管搜索信息不会直接保存到网站服务器,但是,搜索信息确与数据库或者服务器所有文件密切相关,如果搜索信息有问题,很容易就会暴露一些本来不应该暴露的数据库信息或者文件信息。而且,如果用户对程序比较了解,那么这种情况就更加需要注意,用户可能会利用对于程序的了解,来设计一些很特别的搜索信息,而这些搜索信息其实是会检索其他不应该检索的数据库表的,必然,用户账号密码表等。因此,那些从网上下载回来的程序,一般不适宜于直接使用,因为它们的原代码都可以被所有人知道,安全性当然不是很好。在这种情况下,我们一般验证一些常见的用于数据库操作的语句,必然搜索信息是否含有“Select”等,这样来限制用户输入,避免信息的泄露。

2、页面行为方式缺乏逻辑
可能这一点看起来很不好理解,页面行为方式是什么呢?我们现在举例说明。在一般的网站中,注册新用户的时候,一般会首先要求用户输入自己需要注册的账号信息,以此来验证该账号是否已经存在,确保用户的单一性。这样的要求,网站编程者的考虑很好,必然新浪注册新用户的时候,就是这样要求的。然而,如果编程不谨慎,却容易造成一个很大的漏洞,致使用户信息流失、出错等情况的发生。这种情况怎样产生的呢?其实很简单,这些页面在编程的时候,认为如果用户的注册信息通过了刚才我们提到的“检测时候存在该账号”,那么,程序就认为这个账号一定不存在,可以注册,在真正的注册页面中,直接使用“Insert Into”语句将注册信息插入用户数据库就可以了。仔细看看这样的注册过程,我们发现有一个大的漏洞,那就是,将注册信息插入数据库之前,并没有再一次检查这个用户是否存在,而是很简单的信任前一个检测页面传来的账号信息。我们知道,HTML文件是可以阅读源代码并且也可以直接保存的,如果用户将注册通过的页面保存并且将上面的账号信息修改为一个已经存在的账号,由于程序认为该账号已经通过检测,于是,直接将该账号插入数据库,结果,原来拥有该账号的用户就被删除或者信息被修改了。而如果这个账号刚好是一个管理员账号,结果会怎样呢?
|<< << < 1 2 3 4 > >> >>|


·上一篇文章:研究发现92%网站程序可能遭到黑客攻击
·下一篇文章:干干净净:让流氓软件彻底滚出你的系统


转载请注明转载网址:
http://www.jmkt.cn/html/netaq/20285568.htm


相关内容