public DataSet details(String id)
{
OpenDB();
String str="Select * from data where id =@id";
OleDbDataAdapter cmd = new OleDbDataAdapter(str,connstr);
cmd.SelectCommand.Parameters.Add("@id", OleDbType.VarChar,7).Value = id;
DataSet ds = new DataSet();
cmd.Fill(ds);
return ds;
}
如题,谢谢解答!
存储过程能免受SQL注入攻击。这是不对,只能阻止某些种类的攻击
存储过程如果使用未筛选的输入,容易受攻击。
使用存储过程,则应使用参数Parameter作为存储过程的输入
测试输入的大小和数据类型,强制执行适当的限制。。
测试字符串变量的内容,只接受所需的值。
绝不直接使用用户输入内容来生成 Transact-SQL 语句。
使用存储过程来验证用户输入。
在多层环境中,所有数据都应该在验证之后才允许进入可信区域。
实现多层验证。
这段代码,ado.net会自动调用SQLSERVER的系统存储过程:SP_EXECUTESQL来执行你的sql,
至少你的参数只会出现在等于号右侧的时候,是安全的