热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

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

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)

推荐阅读
author-avatar
mini泥猴
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有