防止sql注入的方法:使用类型安全的 SQL 参数
SQL Server 中的 Parameters 集合提供了类型检查和长度验证。如果使用 Parameters 集合,则输入将被视为文字值而不是可执行代码。使用 Parameters 集合的另一个好处是可以强制执行类型和长度检查。范围以外的值将触发异常。以下代码段显示了如何使用 Parameters 集合:
1 SqlDataAdapter myCommand = new SqlDataAdapter("AuthorLogin", conn);
2 myCommand.SelectCommand.CommandType = CommandType.StoredProcedure;
3 SqlParameter parm = myCommand.SelectCommand.Parameters.Add("@au_id",
4 SqlDbType.VarChar, 11);
5 parm.Value = Login.Text;
在此示例中,@au_id 参数被视为文字值而不是可执行代码。将对此值进行类型和长度检查。如果 @au_id 值不符合指定的类型和长度约束,则将引发异常。
存储过程如果使用未筛选的输入,则可能容易受 SQL Injection 攻击。例如,以下代码容易受到攻击:
SqlDataAdapter myCommand = new SqlDataAdapter("LoginStoredProcedure '" + Login.Text + "'", conn);
如果使用存储过程,则应使用参数作为存储过程的输入。
更多资讯:武汉软件工程师培训学校
师资介绍