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

SQL注入攻击的种类和防范手段

观察近来的一些安全事件及其后果,安全专家们已经得到一个结论,这些威胁主要是通过SQL注入造成的。虽然前面有许多文章讨论了SQL注入,但今天所讨论的内容也许可帮助你检查自己的服务器,并采取相应防范措施。
SQL注入攻击的种类
知彼知己,方可取胜。首先要清楚SQL注入攻击有哪些种类。
1.没有正确过滤转义字符
在用户的输入没有为转义字符过滤时,就会发生这种形式的注入式攻击,它会被传递给一个SQL语句。这样就会导致应用程序的终端用户对数据库上的语句实施操纵。比方说,下面的这行代码就会演示这种漏洞:
statement := "SELECT * from users WHERE name = '" + userName + "'; "
这种代码的设计目的是将一个特定的用户从其用户表中取出,但是,如果用户名被一个恶意的用户用一种特定的方式伪造,这个语句所执行的操作可能就不仅仅是代码的作者所期望的那样了。例如,将用户名变量(即username)设置为:
a' or 't'='t,此时原始语句发生了变化:
SELECT * from users WHERE name = 'a' OR 't'='t';
如果这种代码被用于一个认证过程,那么这个例子就能够强迫选择一个合法的用户名,因为赋值't'='t永远是正确的。
在一些SQL服务器上,如在SQL Server中,任何一个SQL命令都可以通过这种方法被注入,包括执行多个语句。下面语句中的username的值将会导致删除“users”表,又可以从“data”表中选择所有的数据(实际上就是透露了每一个用户的信息)。
a'; DROP TABLE users; SELECT * from data WHERE name LIKE '%
这就将最终的SQL语句变成下面这个样子:
SELECT * from users WHERE name = 'a'; DROP TABLE users; SELECT * from DATA WHERE name LIKE '%';
其它的SQL执行不会将执行同样查询中的多个命令作为一项安全措施。这会防止攻击者注入完全独立的查询,不过却不会阻止攻击者修改查询。
2.Incorrect type handling
如果一个用户提供的字段并非一个强类型,或者没有实施类型强制,就会发生这种形式的攻击。当在一个SQL语句中使用一个数字字段时,如果程序员没有检查用户输入的合法性(是否为数字型)就会发生这种攻击。例如:
statement := "SELECT * from data WHERE id = " + a_variable + "; "
从这个语句可以看出,作者希望a_variable是一个与“id”字段有关的数字。不过,如果终端用户选择一个字符串,就绕过了对转义字符的需要。例如,将a_vari


相关文档:

将access导入SQL server

一、SQL SERVER 和ACCESS的数据导入导出
常规的数据导入导出:
使用DTS向导迁移你的Access数据到SQL Server,你可以使用这些步骤:
  ○1在SQL SERVER企业管理器中的Tools(工具)菜单上,选择Data Transformation
  ○2Services(数据转换服务),然后选择  czdImport Dat ......

使用SQLServer模板来写规范的SQL语句

如果你经常遇到下面的问题,你就要考虑使用SQL Server的模板来写规范的SQL语句了:
SQL初学者。
经常忘记常用的DML或是DDL SQL 语句。
在多人开发维护的SQL中,每个人都有自己的SQL习惯,没有一套统一的规范。
在SQL Server Management Studio中,已经给大家提供了很多常用的现成SQL规范模板。
SQL Server Management ......

左连接查询sql语句

有三张表 LP_COMPANY, LP_COMPANYTYPE,LP_APPLICATION
SQL语句是
SELECT  b.appname,c.typename,a.ID,  a.APPID,  a.PROVID,  a.CITY,  a.DISTRICT, a.TYPEID,  a.PARENTID,   
a.COMNAME,  a.CHARGER,  a.LICENSE,  a.OPENBANK,  a.ACCOUNT,  ......

把excel数据生成sql insert语句

实际应用中,我们经常需要把Excel中的数据导入MS SQL Server 或MySQL Oracle等数据库中。这些数据库都提供了很好的工具供用户直接将Excel中的数据导入数据库中。但是很多时候我们并不能直接操作数据库管理器(因为安全需要会配置防火墙拦截数据库端口),我们只能通过web页面对数据库进行远程操作。这个时候,将Excel中的数 ......

Oracle SQL NULL 值对 IN/NOT IN语句的影响

  今天,有一个sql NOT IN语句,匹配条件里有一个null,结果什么都查不出来,同事觉得很难理解。其实只要明白一点就可以了,IN语句匹配的时候是用=,NOT IN匹配的时会用<>,就很容易理解了。
首先我们要知道,null在oracle是个特殊的东西,没有任何可比性,如果使用 =/<> 对比null,得到的始终是false。n ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号