历史悠久的3个经典网站安全漏洞介绍
互联网项目里边,SQL注入漏洞、XSS漏洞和猜测URL攻击这三个漏洞可谓历史悠久,然而直到今天还有人不断中枪,也真是微醺。
这几个漏洞说大也大,说小也小。说大是说这些漏洞危害大,会导致数据层面的安全问题;说小是从技术层面上讲都是未对外部输入做处理导致的,想要做针对性地防范很简单。下面简单看看这些漏洞的原因及防范方法。
SQL注入
SQL注入之所以存在,主要是因为工程师将外部的输入直接嵌入到将要执行的SQL语句中了。黑客可以利用这一点执行SQL指令来达到自己目的。举例来说,有一个接受参数为id的页面,在接收到id后从数据库中查询相应的数据, 其代码大致如下:
代码如下:
正常情况下,Request["ID"]为数字,这条SQL能很好地工作。如果我们认为修改Request["ID"],将其内容修改为?ID=1 OR 1=1 我们将得到这样一条SQL:
代码如下:
因为有OR的出现这条SQL语句已经可以获取User表中的任意信息。利用SQL注入漏洞,我们能够获取想要的信息,同时可以通过猜测-报错获取到数据库其它表的结构和信息,如果数据库、服务器权限设置不当,甚至有可能能获取到整个服务器的控制权限。
规避这种漏洞有很多种办法,以现代的编程语言来说,选择一个合适的ORM框架可以减少不少问题而且能大大提高开发效率。
如果因为某些原因需要继续写SQL语句,参数化查询也能解决这一问题。
对于需要拼接SQL语句的程序来说,注意两点也可以避免此问题。第一点是如果查询的字段类型是数字等类型,在拼接SQL前先判断输入是不是一个合法的数字,不合法则终止程序即可。第二点是如果字段类型是字符串,则记得将输入里的的单引号进行转义。
XSS攻击
如果说SQL注入是直接在SQL里执行了用户输入,那XSS攻击是在HTML里代码执行了用户输入。相对SQL注入,XSS似乎更能引起人关注。几年前新浪微博被人利用XSS获取大量粉丝;3DM也曾经被植入script代码对另一个游戏网站进行了惨无人道的DDOS攻击。
这里还是用SQL注入中的例子来说,假设页面输出为:
代码如下:
这里我们可以在Request["ID"]里传入一段编码后的脚本,在最终输出的时候,就变成了一段可执行的javascript代码。
代码如下:
这段代码获取到当前页面的cookie值,并将cookie值传递到另一个名为anothersite.com的网站。利用这种模式,黑客可以获取到用户的登录信息或者将用户跳转到钓鱼网站来达成自己的目的。
XSS攻击也可以简单分为两种,一种是上述例子中利用url引诱客户点击来实现;另一种是通过存储到数据库,在其它用户获取相关信息时来执行脚本。
防范XSS攻击需要在所有的字段都对输入的字符串进行html encode(或者在输出时进行encode)。如果需要使用富文本编辑的,可以考虑使用UBB。
猜测URL攻击
猜测URL攻击是通过已知的GET、POST参数来猜测未公开的参数并尝试进行攻击。
以Request["ID"]为例,如果ID为1是合法的可访问的数据,可以通过尝试ID=2,ID=3等一系列来尝试是否对其它资源有访问、修改权限。如果控制不当,则可以轻松获得并修改数据。
要避免这种问题,方案一是使用较长的无规律的数字、字符来做为ID,增大猜测难度;对于需要登录的程序,可以判断用户身份是否有对应ID数据的访问、修改权限;如果ID已经是自增类型且不需要登录,可以用过在URL里增加无规律的校验字段来避免。
其它需要注意的地方
安全是一个系统工程。
要提高系统安全性,最首要的一点是不要相信任何输入!不要相信任何输入!不要相信任何输入!重要的事情说三遍。这里的输入除了URL里的GET参数、POST参数,还包括COOKIE、Header等可以进行修改的各类信息。
在程序设置方面,不输出客户不需要知道的各类信息,如原始的异常信息、异常附近的代码段等等,这样也能增加不少安全性。
最后,在测试或系统运行的过程中,可以使用类似appscan这样的安全检测工具来检查程序是否有漏洞。
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布投稿,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务 请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长,可领回失去的金币,并额外有奖!
6. 如遇到加密压缩包,默认解压密码为"www.zyfx8.cn",如遇到无法解压的请联系管理员!
本站部分文章、资源来自互联网,版权归原作者及网站所有,如果侵犯了您的权利,请及时联系我站删除。免责声明
资源分享吧 » 历史悠久的3个经典网站安全漏洞介绍
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 织梦模板使用说明
- 你下载的织梦模板并不包括DedeCMS使用授权,根据DedeCMS授权协议,除个人非盈利站点外,均需购买DedeCMS商业使用授权。购买地址: http://www.desdev.cn/service-dedecms.html