c# – 参数绑定:引擎盖下会发生什么?

前端之家收集整理的这篇文章主要介绍了c# – 参数绑定:引擎盖下会发生什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
.NET,Java和其他各种语言的高级数据库API通常提供称为预处理语句和参数绑定的技术,而不是将纯文本命令发送到数据库服务器.我想知道的是当你执行这样的语句时会发生什么:
sqlCommand cmd = new sqlCommand("GetMemberByID");
cmd.CommandType = CommandType.StoredProcedure;
sqlParameter param = new sqlParameter("@ID",memberID);
para.DbType = DbType.Integer;
cmd.Parameters.Add(param);

我知道这是最好的做法. sql注入攻击以这种方式最小化.但是当你执行这些陈述时,究竟在幕后发生了什么?最终结果仍然是sql安全字符串吗?如果没有,最终结果是什么?这足以防止sql注入攻击吗?

解决方法

准备好的语句上的 The MySQL manual page提供了大量信息(应该适用于任何其他RDBMS).

基本上,您的语句会提前解析和处理,并且参数将单独发送,而不是与sql代码一起处理.这消除了sql注入攻击,因为在参数设置之前解析了sql.

猜你在找的C#相关文章