日期:2014-05-17  浏览次数:20468 次

关于SQL注入问题!!!
为了偷懒存储过程这样写,会不会存在SQL注入的问题
if exists (select * from sysobjects where name ='proc_sel')
drop proc proc_sel
go
create proc proc_sel
@tablename nvarchar(50), --表名
@FieldName nvarchar(100),--查询的字段名
@wherefield nvarchar(100)--where 条件
as
declare @sql varchar(200)
set @sql='select '+@FieldName+' from '+@tablename+' where '+@wherefield+''
exec(@sql)
go

------解决方案--------------------
这种存储过程和你在程序里拼接字符串是一样的,即不会预编译也不能防注入
------解决方案--------------------
sql注入不是这个层次的问题。。。你调用存储过程的时候,能保证输入的参数都是合法的就行
------解决方案--------------------
这样写其实是动态sql,会的