动易CMS 2007新特性体验之旅——全面提高的安全性(4)_动易Cms教程
以下是引用片段: 4、注入漏洞攻击防范: ●使用类型安全的SQL参数化查询方式,从根本上解决SQL注入的问题 ●对于不能使用参数化查询的部分(比如in、like语句),使用严格的过滤函数进行过滤 ●限定URL的传递参数类型、数量、范围等来防止通过构造URL进行恶意攻击 |
在ASP/PHP程序中,查询语句的生成一般是这样的代码方式:
Conn.Execute("SELECT Province FROM PE_Province WHERE Country='" & Country & "' ORDER BY ProvinceID")
这样的方式,假如一不小心没有对要放入SQL查询语句中的Country变量进行防SQL注入过滤,就有可能产生注入问题。这方面的教程实在太多,大家有爱好可以到网上搜索一下。而由此带来的教训则是非常深刻。动易之前发现的一些注入漏洞问题,都是因为程序员不小心没有过滤有关变量造成的。而纵观网上许多程序,还有许多地方是根本就没有将提交过来的值进行过滤就放入查询语句中。如:
Sql = "SELECT Boardid, Boardtype, Boarduser FROM Board WHERE Boardid = " & Request("boardid")
Set Rs = Execute(Sql)
这样的程序的安全性可想而知。
动易CMS2007中,所有的查询语句都是类似如下代码:
以下是代码片段: /// <summary> |
在这段程序中,我们至少使用了两种安全方式。一是用了存储过程,通过将参数传递给存储过程,杜绝了注入的可能。二是参数类型安全化,使用的参数都是强类型的。如这一行代码:parms.AddInParameter("@ID", DbType.Int32, authorInfo.Id);。限制了传过来的参数必须是整型的,假如从页面中传过来的参数不是整型(注入攻击时),就会直接抛出异常,中断执行。动易CMS2007的所有查询语句,都是采用这种方式。这样基本上就杜绝了SQL注入问题。
- MAC错误的解决方法
- 如何屏蔽动易后台导航里的某个功能菜单?
- 动易.NET版本留言自动选定栏目方法
- 动易SiteFactoty整合Discuz!NT3.0
- 在任意位置获取根节点ID标签
- 如何开启SiteWeaver6.8的支持,反对功能
- Windows 2008安装动易.NET系统之四----动易系统安装篇
- Windows 2008安装动易.NET系统之三----数据库篇
- Windows 2008安装动易.NET系统之二----IIS、目录环境配置篇
- 数据库修复,SQL Server 2005内部操作不一致的处理
- 如何安装动易.net程序权限配置
- 为什么提示对Windows系统文件夹下的Temp目录没有访问权限?
- 相关链接:
- 教程说明:
动易Cms教程-动易CMS 2007新特性体验之旅——全面提高的安全性(4)。