sql参数过滤
① %201=1-- sql注入怎么过滤
你举出的这个例子是最常见的注入方式了,原因就是在字符串拼接sql的时候如果有--,那么之后的SQL语句即当做注释进行处理,即便代码或存储过程执行,也是不会报错并能顺利执行之前的语句的。
有2个好用的建议
1 把外部的参数,如果包含-- 则统统替换为 - - 即中间加入空格;这样最多报错,但不会被执行成功
2 如果是代码字符串拼接,建议即便是number型的,在做sql的时候仍然加'' 例如select * from a where b = '"+haha+"'(b字段为数值型),这样对外部的参数进行处理,将所有的单引号统统替换为双引号,即可解决。其中意义在于不让后续的参数拼接形成 '' or 1=1-- and.........之类的局面
② 用SQL语句过滤数据
整个结果集:
SELECT*FROM表
WHERE班级=@班级参数
把DropDownList里绑上班级,根据你下拉的结果,把班级传给整个结果集,用于过滤
SELECTDISTINCT班级
FROM表
这样可以取出不重复的班级记录
最后把DropDownList取出的班级值@班级参数,传给结果集,这样结果集就可以根据你下拉框选的班级,动态过滤结果了。
③ sql 如何过滤重复记录
SQL过滤重复记录有两种办法:
通过SQL结构化查询语言来实现,在Select后面加上关键字DISTINCT,意思就是查询行无重复,注意DISTINCT关键字是针对行,不是某一列,如果想得到某一列不重复记录,那就SELECT DISTINCT后面只放一个字段。
通过存储过程,过滤重复记录,存储过程逐条查询,比对之前的记录,如果有重复就跳到下一条,如果不重复游标继续。
④ sql里过滤相同数据
如有表A(col1,col2,col3)
要过滤col1,col2,col3都相同的数据时可以用distinct
如select distinct col1,col2,col3 from A
如只要过滤col1,col2相同的数据,且取col3最大值时可以如下
select col1,col2,max(col3) as col3 from A group by col1,col2
⑤ “如何使用”SQL过滤代码
Public Function RepBadChar(strChar)
If strChar="" Then
RepBadChar=""
Else
RepBadChar=Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(strChar,"'",""),"?",""),"(","("),")",")"),"<",""),".","."),">","")," ","")
End if
End function
dim id
id =request.QueryString("id")
if len(RepBadChar(id))<>len(request.QueryString("id")) then
response.write"<script>alert(""id参数里含有非法字符"");location.href=""../index.asp"";</script>"
response.end
end if
⑥ sql 如何过滤重复记录
问题背景
在一个多表查询的sql中正常情况下产生的数据都是唯一的,但因为数据库中存在错误(某张表中存在相同的外键ID)导致我这边查询出来的数据就会有重复的问题
下面结果集中UserID:15834存在多个
参考:
MSDN: OVER 子句 (Transact-SQL)
stackoverflow sql query distinct with Row_Number
SQL Trick: row_number() is to SELECT what dense_rank() is to SELECT DISTINCT
⑦ 防sql注入到底应过滤哪些字符
一般来说,这样处理即可:
所有参数都当作字符串处理,用单引号括起来。另外就是要把字符串中的单引号替换掉。