这样传参作为 SQL 语句是不行的,如果真要这么干,需要改 SQL 语句
string sql = "exec sp_executesql 'select * from ScholClass where ' + @StrWhere + ' order by ' + @Stroder";
这这样会带来 SQL 注入问题。
那请问,我如果想拼接strWhere 和strOrder,又想避免sql注入问题,我该怎么整,我以为用了dynamicparameters就避免注入问题了?我是把dapper的使用姿势给搞错了吗?才用这个东西没多久。
@断流: 唯有使用 EF ,用 LINQ 进行拼接
@dudu: 也就是说dapper这个东西无法避免这个问题了呀,我看您用的是唯有这个词
@断流: 是的,这是拼接 SQL 语句的问题,不在 Dapper 的管辖范围。
@dudu: 嗯,有个印象了,我刚又简单搜了下,有篇博客说“在数据访问层,绝大多数采用存储过程访问数据,调用时以存储过程参数的方式访问,也会很好的防止注入式攻击。”。那我dapper配合存储过程是不是间接解决了
@断流: 在存储过程中使用字符串拼接 SQL ,也是同样的问题
@dudu: 嗯,感谢前辈的耐心指导,我周六会专门抽时间补习一下相关的知识