易截截图软件、单文件、免安装、纯绿色、仅160KB

防范sql注入攻击(下) 参数化sql

上一篇写的sql注入的基本原理,本来要接着写这篇的,但是由于时间的原因一直没有写成,今天是五一假期,总算是能抽空写写了。
作为一个程序员,防范sql注入的第一线是由我们来守护的,只要我们在程序中留少许的漏洞,就会给程序增强安全特性。所以我们要做的是要写安全的程序,防止sql注入在程序体现在不要拼接sql字符串,一定要参数化sql或者写存储过程,这里就说说简单的参数化sql吧。
例子中用c#和oracle实现,java中或者其他数据库中的实现也是类似的。
using System.Data.OracleClient;//引入oracle操作包
 
//定义DML语句
string strSQL = @"select user.name from user where user.name = :userName";
//上句中的:userName就是sql语句中参数的占位符,也就是说在数据库服务器中执行这条sql语句的时候这个占位符要被其他东西替换掉,到底用什么东西替换呢,接着往下看
OracleParameter[] param = {
new OracleParameter(":userName",txtName);
}//这里定义一个参数的数组,里面可以写入多个sql参数,咱们的这里只有一个,所以就写入一个参数,这里讲占位符和他的替换也就是参数值对应起来了,txtName就是占位符的替换值,他是用户界面中用户输入的值,就是他可能含有注入攻击的字符,这下数据库服务器知道用什么东西替换占位符了。
定义好sql语句和参数后就是执行了,执行的时候需要同时将sql语句和参数传入,这样用户输入的带有非法字符的字符串在数据库会当作参数处理,而不会当作sql语句和数据库自己的字符混乱,防止了注入攻击。
    OracleCommand cmd = new OracleCommand();
     cmd.CommandText = strSQL;//定义oracle命令的文本内容
      for(oracleParameter p in param)//将参数传入
{
cmd.Parameters.Add(p);
}
     cmd.ExecuteNonQuery(); //执行命令
 
上面基本上是一个完整的参数化sql,不同的数据库服务器sql语句中参数的占位符不同,上面用的是oracle,参数占位符是冒号(:)加名字,在sqlserver中是用@符号加名字作为占位符,而在mysql中用问号(?)加名字来作为参数占位符,不同的数据库中参数的表示符号不一样,这个需要注意。


相关文档:

sql大数据操作如何优化

具体要注意的:  
1.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:  
select id from t where num is null  
可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:  
select id from t where num=0 &n ......

C#与SQL Server 2000实现无限级菜单


//tree.aspx.cs
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Syst ......

SQL Pivot & UnPivot

create table students (
  name varchar(25),
  class varchar(25),
  grade int
)
insert into students values ('张三','语文',20)
insert into students values ('张三','数学',90)
insert into students values ('张三','英语',50)
insert into students values ('李四','语文',81)
insert in ......

Oracle发布免费数据库开发工具SQL Developer 1.2


Oracle发布免费数据库开发工具SQL Developer 1.2
2007.09.25  来自:CSDN   呐不喊   共有评论()条 发表评论    收藏
Oracle SQL Developer是甲骨文公司免费提供的数据库开发工具,可帮助用户简化开发工作,提高编制和调试SQL和PL/SQL代码的效率。现在,这个免费工 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号