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

SQL 注入露洞相关知识整理

 上上个星期,有人反馈,CSDN有SQL注入露洞,汗颜,几年前为SQL注入露洞,部门专门对所有代码做过一次非常大的检查,竟然那次检查还有遗漏的地方。最近这几个星期,就是一直再对代码做再次复查,看有没有SQL注入露洞。
        存在SQL注入露洞,就因为你的SQL语句是自己拼凑的,在拼凑的时候,没有考虑用户可能拼凑进有问题的语句造成的。
        之前我们采去的避免措施是,对接受的参数的校验进行封装,所有参数的获得,都必须通过这个封装的函数来获得。但是实际开发中,总有些地方,有些代码没有调用这个封装的函数来进行校验。
        上周末,公司内部讨论会的时候,决定换种思路。从避免自己拼凑SQL语句的方式来实现,具体就是开发规范中有一条,不允许用拼凑的SQL语句,要传参数,就用SqlParameter。比如下面的代码是不允许的。
string strSQL = "select UserID,UserName,Email from User where UserName = '"+aa.replace("'","''")+"'";
SqlDataReader sdr = SqlHelper.ExecuteReader(strConnStr,CommandType.Text,strSQL)
而下面的代码是允许的:
SqlParameter[] parm1 = new SqlParameter[]{
 new SqlParameter("@UserName",SqlDbType.NVarChar,50)
 };
parm1[0].Value = strUserName;
string strSQL = "select UserID,UserName,Email from user where UserName = @UserName ";
SqlDataReader sdr = SqlHelper.ExecuteReader(strConnStr,CommandType.Text,strSQL,parm1)
原因:SqlParameter 会自动处理参数的校验,就类似使用存储过程是不会出现SQL注入露洞的问题一样。
一些SQL注入有关的知识点:
如何SQL注入:
http://www.54nb.com/Read.Asp?ID=1451672&Type=71
SQL注入中有用的几个SQL语句
[N] = 第N個表
ID=1 and (Select top 1 name from(Select top [N] id,name from sysobjects where xtype=char(85)) T order by id desc)>1
[T] = 表名
[N] = 第N個字段
ID=1 and (Select Top 1 col_name(object_id('[T]'),[N]) from sysobjects)>1
SQL注入表名和字段名的获得


相关文档:

[收拢] 用sqlite 执行标准 sql 语法

http://www.umgr.com/blog/PostView.aspx?bpId=36294
 1. 执行sql语句
int sqlite3_exec(sqlite3*, const char *sql, sqlite3_callbacksql 语法
, void *,  char **errmsg );
这就是执行一条 sql 语句的函数。
第1个参数不再说了,是前面open函数得到的指针。说了是关键数据结构。
第2个参数const char ......

SQL分页查询

/*第几页必须大于1
select top 每页数量 * id
 from @t a
 where id not in
 (select top (第几页-1)*每页数量 id
  from @t b
 )
*/
declare @lcSqlCommand nvarchar(100)
declare @t table (id int IDENTITY,orderDate datetime)
insert into @t
 select orderDate
&nb ......

sql索引类型

索引类型
唯一索引:唯一索引不允许两行具有相同的索引值
主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空
聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个
非聚集索引(Non-clustered):非聚 ......

sql数据库置疑解决办法

注'svw'为出问题的数据库,此方式对sql7.0以上版本有效,其它低版本为测试
sp_configure  'allow',1 
go
reconfigure  with  override 
go
update  sysdatabases  set  status=32768  where  name='svw' 
go
dbcc  rebuild_log('svw','D:\mssql7\data ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号