日期:2011-07-27 浏览次数:20567 次
几年前,网站中大多数都存在sql注入。sql注入在这几年可以说已经被广大网站管理者所认知,并在搭建网站的时候都能注意到网站防注入这一问题,但为什么我们EeSafe现在收录的网站中,还是有很大一部分存在sql注入问题?我想并不是由于网站站长不知道sql注入的危害(危害我这里就不说了,大家可以去百度等搜索引擎上查找),而是由于网站对于像sql注入这样的问题的防范和发掘不够深造成的,这里我把防范sql的黄金方法和大家交流一下,应该能够在网站防止安全漏洞的方面起到推波助澜的作用,至于如何发掘,我会在后篇提及。
能够防范sql注入的好方法(注意,我这里说的是“防范”)只有一个,那就是强化网站开发过程中的安全流程,有人说上硬件,那我要问上什么硬件?防火墙?DDOS防攻击?安全网关?这些基本上都防不住,或者个别的有防注入功能但至于效果怎么样,我就不多说了。我接触的最有效的方法只有一种:加强网站开发过程中的代码编写,安全测试流程。由于负责编写程序的程序员水平和经验参差不齐,绝大多数程序员并没有接受过安全开发培训,所以在网站开发过程中要去进行安全方面的考量是不太现实的,这也就造成了到现在还有那么多网站存在大量的安全隐患的局面,所以不仅是防sql注入,防任何网站安全问题都要从开发流程和方法上着手。
那怎样着手防止,给大家几个建议和方法。
首先明确自己要假设网站的技术架构,截止发文在eesafe网站安全联盟上收录的网站使用ASP或asp.net加MSSQL这样的构架站52%,PHP+MYSQL的占35%。
其次根据选择的不同架构做不同的安全解决方案。
比如如果你的网站使用PHP+MYSQL开发的(现在流行的大多数CMS发布系统都是采用PHP)。
1.加强脚本层(也就是在PHP方面加强防注入手段)。使用Php.ini的magic_quotes_gpc选项。在开发过程中凡是需要接受用户输入的位置使用addslashes函数、intval函数,htmlspecialchars函数,htmlentities函数,并加入javascript防注入漏洞过滤函数(现成的过滤函数可以在eesafe网络安全交流区里找到)和PHP防注入漏洞过滤函数(现成的过滤函数可以在eesafe网络安全交流区里找到)。
2.加强数据层(也就是数据库方面加强防注入手段)。在网站和数据库进行连接时(也就是连接池)使用的用户具有普通权限就可以了,不要使用超级用户或数据库所有者的账号。对提交数据的类型和格式进行严格检查,确保数据类型符合要求,比如用mysql数据库系统函数isnumberic()判断传到数据库中的值是否是数字。另外在连接数据库时尽量使用sssl或ssh。
其他构架的网站也和上面的相同,只是不同的构架防范细节侧重点不同。当然,你可以下载使用本地版的EeSafe网站安全检测工具,选择相应的构架对你的网站进行源代码级的注入检测,该软件提供对PHP,ASP,.NET,JSP等多种构架的检测。并且现在可以通过申请得到正式版注册号。好了,虽然现在网上有很多介绍网站防sql注入的文章,但我想通过本篇你会对防注入有一个更全面的认识,能够给网站的开发和运营带来帮助。
原创文章,纯手打,转载请注明版权归属:EeSafe网站安全联盟
转载请以链接形式注明原文地址:EeSafe网络安全论坛http://www.eesafe.com/bbs/thread-362-1-1.html