免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

標題: [建站經驗] EeSafe:实践有效的网站防SQL注入(一) [打印本頁]

作者: superman1024    時間: 2013-8-15 14:03     標題: EeSafe:实践有效的网站防SQL注入(一)

几年前,网站中大多数都存在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防注入漏洞过滤函数(现成的过滤函数可以在http://www.eesafe.com/bbs/thread-360-1-1.html上面找到)和PHP防注入漏洞过滤函数(现成的过滤函数可以在http://www.eesafe.com/bbs/thread-361-1-1.html上面找到)。

2.加强数据层(也就是数据库方面加强防注入手段)。在网站和数据库进行连接时(也就是连接池)使用的用户具有普通权限就可以了,不要使用超级用户或数据库所有者的账号。对提交数据的类型和格式进行严格检查,确保数据类型符合要求,比如用mysql数据库系统函数isnumberic()判断传到数据库中的值是否是数字。另外在连接数据库时尽量使用sssl或ssh。

其他构架的网站也和上面的相同,只是不同的构架防范细节侧重点不同。当然,你可以下载使用本地版的EeSafe网站安全检测工具,选择相应的构架对你的网站进行源代码级的注入检测,该软件提供对PHP,ASP,.NET,JSP等多种构架的检测。并且现在可以通过申请得到正式版注册号。好了,虽然现在网上有很多介绍网站防sql注入的文章,但我想通过本篇你会对防注入有一个更全面的认识,能够给网站的开发和运营带来帮助。


原创文章,纯手打,转载请注明版权归属:EeSafe网站安全联盟
转载请以链接形式注明原文地址:EeSafe网络安全论坛http://www.eesafe.com/bbs/thread-362-1-1.html
作者: superman1024    時間: 2013-8-15 14:04

EeSafe:实践有效的网站防SQL注入(二)

姊妹篇“《实践有效的网站防SQL注入(一)》”跟大家交流了防止sql注入的黄金方法,从开发入手,在两个层次解决,我想如果大家按照介绍的步骤都能够做到,我想大家应该能够做到很好的防御效果。但我们说,没有100%的安全,网站的微小功能变动或升级都可能会对全局造成影响,这也就是为什么eesafe网站安全联盟收录的网站还是有部分存在注入漏洞,那么如何随时关注网站是否存在这样的安全问题?这就需要我们说的发掘,了解和掌握如何发掘像sql注入这样的网站漏洞。

不管你的网站采用的是什么构架,php+mysql或jsp+oracle等等,其实际注入发掘的步骤基本是统一的,都有很大的相似性。我简单介绍一下eesafe在帮助网站挖掘注入的基本方法。

1、判断脚本系统(也就是判断网站使用的是asp,php,jsp等)。

2、发现注入点,扫描注入漏洞(根据不同的脚本系统选择合适的扫描注入方式)。

3、特殊注入点的判断(有时候注入点的脚本系统过滤了一些特殊字符,这时候就需要做转移注入判断测试)。

4、判断数据库类型。(利用数据库的系统变量、系统表判断数据类型确定数据库是MSSQL,MYSQL还是ORACLE)

5、判断数据库中的表结构(判断数据库名称,库中表名称,表中字段名,表中数据)。

6、判断数据库表中字段的结构(使用猜解方式或读取方式判断表中字段结构)

7、构造注入语句进行注入(构造特定注入语句获取重要数据,如尝试管理员账户或密码)

这六部大致上就是一般的发掘步骤,在实际操作过程中可能会根据情况不同有细微的变化。最后,将通过6部验证的注入点提供给请求帮助的网站,供修补注入漏洞。大家可以将我们使用的挖掘注入的流程应用到自己的网站上做一个全面sql注入点发掘,当然,大家也可以用eesafe网站安全联盟提供的在线检测工具。希望这篇和上篇“《实践有效的网站防SQL注入(一)》”能给大家带来帮助。



原创文章,纯手打,转载请注明版权归属:EeSafe网站安全联盟

转载请以链接形式注明原文地址:EeSafe网络安全论坛http://www.eesafe.com/bbs/thread-383-1-1.html




歡迎光臨 SCLUB免費論壇申請-使用者論壇 (http://funbbs.me/discuz/) Powered by Discuz! 7.2