首页 > 数据库 > mysql教程 > sql 通用高效分页代码(存储过程是带有sql注入)(1/2)

sql 通用高效分页代码(存储过程是带有sql注入)(1/2)

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
发布: 2016-06-07 17:47:27
原创
722 人浏览过

sql 通用高效分页代码(存储过程是带有sql注入)

sql 通用高效分页代码(是带有sql注入)


大家可以看到上面的存储过程中是通过一些步骤最终拼接成一个sql字符串,然后通过exec执行这个串得到分页的结果。

我们假定要做一个这样的查询,通过用户名username模糊查询用户,为了叙述方便,便于理解我们只考虑取第一页的情况,取出存储过程中取第一页的拼串行如下:

为了便于说明问题,我们可以假定@pagesize为20,@strgetfields为 ‘*',@tblname为useraccount,@strorder为' order by id desc' 那么上面一行可以写成如下形式:

set @strsql = 'select top 20 * from [useraccount] where ' + @strwhere + ' order by id desc'

我们可以假定用户输入的模糊用户名是: jim's dog
我们用sqlparameter传递参数给分页存储过程@strwhere 的值是:'username like ‘'%jim'' dog%'''(注意like后边的字符串中的单引号已经全部变成两个单引号了),我们将这个值代入上面的@strsql赋值语句中,如下:

set @strsql = 'select top 20 * from [useraccount] where username like ''%jim'' dog%'' order by id desc'

让我们写上声明变量的部分执行在查询分析器中测试一下,代码如下:

 

declare @strsql varchar(8000)
declare @strwhere varchar(1000)
set @strwhere = 'username like ''%jim'' dog%'''
set @strsql = 'select top 20 * from [useraccount] where ' + @strwhere + ' order by id desc'
print @strsql
exec (@strsql) 

相关标签:
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
php - prepare与sql的开销?
来自于 1970-01-01 08:00:00
0
0
0
sql文件
来自于 1970-01-01 08:00:00
0
0
0
打印sql语句
来自于 1970-01-01 08:00:00
0
0
0
sql优化or
来自于 1970-01-01 08:00:00
0
0
0
mysql - sql报错原因?
来自于 1970-01-01 08:00:00
0
0
0
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板