Maison > base de données > tutoriel mysql > sql 通用高效分页代码(存储过程是带有sql注入)(1/2)

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2016-06-07 17:47:27
original
728 Les gens l'ont consulté

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) 

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
fichier SQL
Depuis 1970-01-01 08:00:00
0
0
0
Imprimer l'instruction SQL
Depuis 1970-01-01 08:00:00
0
0
0
optimisation SQL ou
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal