SQL 语句中特殊字符的处理及预防sql 注射
2019-08-03 12:18
846 查看
原文链接:https://www.geek-share.com/detail/2398323140.html
在sql语句中,有些特殊字符,是sql保留的。比如 ' [ ] 等。我们可以先看看它们的用法。
当需要查询某数据时,加入条件语句,或着当你需要insert记录时,我们用 ' 来将字符类型的数据引起来。比如:
Select * from Customers where City = 'London'
当表的名字或列的名字中,含有空格等一些特殊字符时,我们需要用[] 将表名引起来,告诉语法分析器,[]号内的才是一个完整的名称。比如
Select * from [Order Details]
如果,字符数据中,含有 ' 改怎么办呢?其实,好多人在这里并没有处理字符川中 ' 符号,才造成sql 注射危险。就那上面的那个例子。在Sql语句拼接的时代,比如
string sql = "select * from Customers where CustomerID = '" + temp + "'";
如果,我给temp赋值为 Tom' or 1=1 ---
那么你拼接起来的语句为 select * from Customers where CustomerID = 'Tom' or 1=1 --- '
哈哈,1=1 衡为真,---会把后面的sql语句注释掉。而前面因为有输入的 ' 而使的语句是合法的。那or的条件,会把所有的记录都选出来。这就是sql注入。在做用户登陆时,如果没有处理该问题,那你的系统受危害的可能性会很高的。
如何处理字符数据中的 ' 符号呢? 方法很简单,用两个 ' 符号代替一个。 比如,其实际传入的值为Lon'don,处理后为
Select * from Customers where City = 'Lon''don'
就可以了。
如果表或列的名称中含有 [ 或 ] 字符呢?比如Select * from [Order] Details],那中间 ] 符号岂不是先和第一个[ 配了。后面的就是非法的了。怎么办呢? 简单,使用 ]] 代替 ] 。对于[,则无须处理。那就该为
Select * from [Order]] Details]。
当需要查询某数据时,加入条件语句,或着当你需要insert记录时,我们用 ' 来将字符类型的数据引起来。比如:
Select * from Customers where City = 'London'
当表的名字或列的名字中,含有空格等一些特殊字符时,我们需要用[] 将表名引起来,告诉语法分析器,[]号内的才是一个完整的名称。比如
Select * from [Order Details]
如果,字符数据中,含有 ' 改怎么办呢?其实,好多人在这里并没有处理字符川中 ' 符号,才造成sql 注射危险。就那上面的那个例子。在Sql语句拼接的时代,比如
string sql = "select * from Customers where CustomerID = '" + temp + "'";
如果,我给temp赋值为 Tom' or 1=1 ---
那么你拼接起来的语句为 select * from Customers where CustomerID = 'Tom' or 1=1 --- '
哈哈,1=1 衡为真,---会把后面的sql语句注释掉。而前面因为有输入的 ' 而使的语句是合法的。那or的条件,会把所有的记录都选出来。这就是sql注入。在做用户登陆时,如果没有处理该问题,那你的系统受危害的可能性会很高的。
如何处理字符数据中的 ' 符号呢? 方法很简单,用两个 ' 符号代替一个。 比如,其实际传入的值为Lon'don,处理后为
Select * from Customers where City = 'Lon''don'
就可以了。
如果表或列的名称中含有 [ 或 ] 字符呢?比如Select * from [Order] Details],那中间 ] 符号岂不是先和第一个[ 配了。后面的就是非法的了。怎么办呢? 简单,使用 ]] 代替 ] 。对于[,则无须处理。那就该为
Select * from [Order]] Details]。
转载于:https://www.cnblogs.com/126/archive/2007/08/17/859502.html
相关文章推荐
- SQL 语句中特殊字符的处理及预防sql 注射
- (转)SQL 语句中特殊字符的处理及预防sql 注射
- (转)SQL 语句中特殊字符的处理及预防sql 注射
- SQL 语句中特殊字符的处理及预防sql 注射
- SQL语句处理含有特殊字符的表名
- sql语句中含有特殊字符的处理方式
- 过滤sql特殊字符及预防sql注射
- SQL语句处理特殊字符的例子
- SQL或HQL预编译语句,可以防止SQL注入,可是不能处理%和_特殊字符
- mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符,可使用本函数来预防数据库攻击。
- sql语句中一些特殊字符的处理
- SQL或HQL预编译语句,能够防止SQL注入,但是不能处理%和_特殊字符
- mysql sql语句中的特殊字符处理
- 拼接字符SQL语句拼接 最后一个字符多出 处理方式
- 更新OPC点位值,值中带有特殊字符影响sql语句执行的解决办法
- 基于hibernate的基本dao接口与实现 及 sql模糊查询特殊字符处理 及 struts 特殊字符在界面正常回显
- mysql的sql语句特殊处理语句总结(必看)
- java处理SQL特殊字符转义 防止sql注入
- sql: 去除数据库表中tab、空格、回车符等特殊字符的解决方法 去除tab、空格、回车符等使用replace语句 按照ASCII码, SELECT char(64) 例如64 对应 @,则se
- 关于处理SQL特殊字符的基本方法总结