xxy*_*yxx 7 sql t-sql stored-procedures
我有一个输入@featuretype的sp.@featuretype将等于"mobile","login"或"index",并且将对应于db中的列.
在我的sp我有:
EXEC(
'select TOP 3 * from featuredtypes_v where'+' featuredtypes_v.'+@featuretype+'Page=1'+
' order by featuredtypes_v.priority desc'
)
Run Code Online (Sandbox Code Playgroud)
但是,我被告知这会打开一个sql注入数据库.我的两个问题是,为什么会这样,以及如何编写此查询以避免这种情况呢?
你为什么不用case?
select TOP 3 *
from featuredtypes_v F
where
case
when @featuretype = 'mobile' then F.MobilePage
when @featuretype = 'login' then F.LoginPage
when @featuretype = 'index' then F.IndexPage
end
= 1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1983 次 |
| 最近记录: |