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

WEB安全解决方案一之SQL注入防范

一、SQL注入防范
在一个WEB动态页面中(例如aspx或者jsp),这个页面允许用户在输入框中输入字符,这个字符可以被引入到数据库中去进行查询(这里的查询是通用的说法,实际上包括了增删改查)操作。一个黑客在这个输入框中输入了一个畸形查询字符串,从而改变了原有的查询,这可以被用来插入,改变,或损害后台数据库。怎么可能呢?请看下面的例子。
       以登陆为例,后台代码通过构造SQL语句“select * from user where   username = 'txtUserName.Text.Trim() 'and password ='txtPwd.Text.Trim()';如果用户在输入框中输入用户名为admin'or'1'='1, 让后任意输入比如123为密码,则后台执行的SQL语句为select * from user where username='admin'or'1'='1'and password='123';这是,无论密码是否正确,最终SQL语句查询结果都不为空,这便是一个典型的SQL注入攻击,通过此种方式,攻击者成功绕过密码验证,登陆系统。一个典型的解决方案是构造“select count(*) from user where username='txtUserName.Text.Trim() 'and password = 'txtPwd.Text.Trim()'这样的SQL语句,这样如果攻击者采取上述攻击方式,则会因为返回的count值大于1而验证失败。 
 但问题并不会因此结束,如果攻击者构造如下的攻击语句呢?比如“select count(*) from user where username=’txtUserName.Text.Trim() ‘--and password =’txtPwd.Text.Trim’,注意加粗的部分实际上是被注释掉了,也就是说验证将会成功。更厉害的,攻击者会构造出“select count(*) from user where username ='txtUserName.Text.Trim() ';drop table user ;--’ and password ='txtPwd.Text.Trim';注意到不仅验证通过,而且user表被删除,这下子谁都不要想再登陆了。
 类似的,黑客们通过精巧的构造,可以达到绕过密码认证,修改破坏关键数据,乃至获取系统完全控制权的目的。这里你也许会问攻击者如何得到数据库中的表名和字段,这里一种方法是暴力破解,根据规律尝试,比如系统多存在user表,用来存放用户信息。另外一种方法是利用SQL注入攻击猜解,通过构造一些能够使数据库产生错误信息的SQL语句,获取数据库的敏感信息,进行表名和字段的猜解,密码破解等。
解决方法
1.   避免使用动态生成的SQL语句
通过字符串相加的方式动态生成的SQL语句正是SQL注入的万恶之源,


相关文档:

SQL 查詢不區分大小寫

SQL 查詢不區分大小寫
2007年04月19日 星期四 15:27
正常用这个方法就给達到效果了。select * from
pl_account     where UPPER(fname) like 'PE%'
附加:
在sql2000和7.0的查询语句中,区分大写的查询方法
--sql2000,就用下面的方法.
--就是在字段名后加 collate Chi ......

SQL查询 重复记录

SQL查询 重复记录
http://blog.csdn.net/tobeistdo/archive/2009/11/12/4797534.aspx
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId  from   people  group  by   peopleId  ha ......

SQL用select语句查询重复记录

SQL用select语句查询重复记录
http://hi.baidu.com/bilbit/blog/item/5ed5de16a6f6b412962b43eb.html
用select语句,查询重复记录
假设,表名为 T1 子段为 A,B,C
select count(*) ,A,B,C from T1
   group by A,B,C having count(*) > 1
测试数据:
    A100    &n ......

SQL数据库不同备份名称存放不同路径还原方法

/*------------------------------------------------------------------
--  Author : htl258(Tony)
--  Date   : 2010-04-15 22:07:01
--  Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
    Jul  9 2008 14:43:34
    Copy ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号