代码分析时提示有SQL安全漏洞

从不签到 2016-03-30 11:45:52
要执行一个从数据库取出来的存储过程
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@NO", SqlDbType.Int).Value = No;
cmd.CommandText = sp; // 此处的sp是从数据库取出来的

问一下各位大神,有什么方法能去掉这个警告不?

附上微软的解决方法
https://msdn.microsoft.com/zh-cn/library/ms182310%28VS.100%29.aspx
...全文
171 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
BitCoffee 2016-03-31
  • 打赏
  • 举报
回复
你的sp变量既然是从数据取出来的,那么你定义一个存储过程,将sp的需要用到的参数作为存储过程的参数,然后再多加一个 No的参数,这样 cmd.CommandText = "SP_0001"; 不就是可以写具体的存储过程名称了。
从不签到 2016-03-31
  • 打赏
  • 举报
回复
具体要怎么合并?
  • 打赏
  • 举报
回复
估计是你的sp实现里面拼接sql并exec了吧
nry19871012 2016-03-30
  • 打赏
  • 举报
回复
参数化就可以了。
BitCoffee 2016-03-30
  • 打赏
  • 举报
回复
既然你的sp是从数据库取出来的,是不是可以将你取sp的部分合并到一个存储过程里面去。 然后就可以用你上面说的 cmd.CommandText = "SP_0001";
从不签到 2016-03-30
  • 打赏
  • 举报
回复
如果这样 cmd.CommandText = "SP_0001"; cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add("ID", SqlDbType.Int).Value = Id; 就不会有警告
从不签到 2016-03-30
  • 打赏
  • 举报
回复
程序没运行,sp是什么内容,vs不知道 所以,我估计是只要这样写,就出警告

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧