关于oracle存储过程防止sql注入的问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。
时间:2011-11-25
来源:互联网
我用open cursor1 for v_sqlstring动态打开游标,那个v_sqlstring是一个查询语句,为了防止查询条件有单引号之类的特殊符号,我用replace替换掉了单引号。
但是要查询的内容有单引号,要把这条含有单引号的内容查出来的话,就查不出了,什么办???
但是要查询的内容有单引号,要把这条含有单引号的内容查出来的话,就查不出了,什么办???
作者: bill0605030109 发布时间: 2011-11-25
SQL code
列一下实例来看看!
作者: cosio 发布时间: 2011-11-25
select replace(projectname,'''','') into projectname_temp from dual;这个地方把查询条件projectname里的单引号去掉了,但是如果这个字段里的数据有单引号的话,就查不出来了。。
SQL code
SQL code
CREATE OR REPLACE function certificatefunction1 ( projectstate in int, projectname in varchar, startDateMin in varchar, startDateMax in varchar, endDateMin in varchar, endDateMax in varchar, certificateType in int, versions in varchar ) return sys_refcursor as cursor1 sys_refcursor; projectname_temp varchar(50); sqlstr varchar(2000); begin sqlstr := sqlstr || ' select pp.profile_Id,pp.name,pp.version,pp.start_Date,pp.end_Date,pci.certificate_Type '; sqlstr := sqlstr || ' from Project_Profile pp,Project_Certificate_Info pci '; sqlstr := sqlstr || ' where pp.profile_Id = pci.profile_Id '; sqlstr := sqlstr || ' and pp.status != ' || projectstate; if projectname is not null then select replace(projectname,'''','') into projectname_temp from dual; sqlstr := sqlstr || ' and pp.name like ''%' || projectname_temp || '%'''; end if; if startDateMin is not null then sqlstr := sqlstr || ' and pp.start_date >= to_date(''' || startDateMin || ''',''yyyy-mm-dd'')'; end if; if startDateMax is not null then sqlstr := sqlstr || ' and pp.start_date < to_date(''' || startDateMax || ''',''yyyy-mm-dd'')'; end if; if endDateMin is not null then sqlstr := sqlstr || ' and pp.end_date >= to_date(''' || endDateMin || ''',''yyyy-mm-dd'')'; end if; if endDateMax is not null then sqlstr := sqlstr || ' and pp.end_date <= to_date(''' || endDateMax || ''',''yyyy-mm-dd'')'; end if; if certificateType != -1 then sqlstr := sqlstr || ' and pci.certificate_Type = ' || certificateType; end if; if versions is not null then sqlstr := sqlstr || ' and pp.version like ''%' || versions || '%'''; end if; sqlstr := sqlstr || ' order by pp.profile_Id desc '; open cursor1 for sqlstr; return cursor1; end certificatefunction1;
作者: bill0605030109 发布时间: 2011-11-25
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28