日期:2014-05-19  浏览次数:20421 次

请问,登录如何用存储过程来防止sql注入??
如题:
请问,登录如何用存储过程来防止sql注入??

------解决方案--------------------
办法挺多的
如果用ADO。NET直接用参数化查询就可以了
千万不要拼那个SQL字符串
例 :
( c# )
string name = "张三 ";
string SQLSelect = "select * from 表名 where name = ' "+name " ' ";

这样隐患很大 很容易被注入攻击!


------解决方案--------------------
string SQLSelect = "select * from 表名 where name = ' "+name " ' ";
不要用select *
用select 字段名1,字段名2
设置非管理员权限,一般用户登陆,不要使用sa登陆,另外设置一个登陆,
在数据库中对系统表如sysobjects,syscolumn等进行权限设置

------解决方案--------------------
http://dev.csdn.net/article/84/84938.shtm
http://dev.csdn.net/article/84/84939.shtm
------解决方案--------------------
@ 就是参数的意思,加了@就是所谓的参数化,可以防止SQL注入攻击
一般Parameter出现都是这样的
申明变量:
//cmd是Comment类的对象,@kind是参数变量
cmd.Parameters.Add( "@kind ", OleDbType.Char, 40);
//给@kind变量赋值
cmd.Parameters[ "@kind "].Value = this.textBoxKind.Text;