sql注入与参数化查询

Sql注入:用户的输入中嵌套有sql语句,当采用动态拼接sql语句的时候,会把这些sql语句也拼接起来,
改变了原来的sql语句的语义,最终可能导致一些灾难性的后果。
解决办法:采用参数化查询的方式。
参数化查询为什么能解决一部分sql注入?
参数化查询是在数据库完成sql指令的编译之后,套用参数运行,即使参数中含有指令,也会被数据库当做参数执行。
另外参数化查询的方式会重用执行计划,省去了重新编译的时间,提高了操作数据库的效率。
注意事项:
使用参数化查询的时候需要指定参数的类型和size,
如果没有指定参数的类型,托管代码不能自动识别参数类型,进而会对该字段进行全表扫描已确定参数类型并进行转换,会消耗不必要的性能。
如果不指定size,会导致数据库每次都根据传入的参数值判断这个参数的size,这样就导致数据库的执行计划不重用,浪费了执行时间。

原文地址:https://www.cnblogs.com/xiaoxinstart/p/14022951.html