首页 新闻 会员 周边 捐助

dapper sql拼接时,因为把条数和排序当参数,结果报错了,查找一波后无果,求解,在线等

0
悬赏园豆:10 [已解决问题] 解决于 2020-02-13 22:14

AI大胜的主页 AI大胜 | 初学一级 | 园豆:122
提问于:2020-02-13 17:58
< >
分享
最佳答案
0

这样传参作为 SQL 语句是不行的,如果真要这么干,需要改 SQL 语句

string sql = "exec sp_executesql 'select * from ScholClass where ' + @StrWhere + ' order by ' + @Stroder"; 

这这样会带来 SQL 注入问题。

收获园豆:10
dudu | 高人七级 |园豆:29333 | 2020-02-13 19:59

那请问,我如果想拼接strWhere 和strOrder,又想避免sql注入问题,我该怎么整,我以为用了dynamicparameters就避免注入问题了?我是把dapper的使用姿势给搞错了吗?才用这个东西没多久。

AI大胜 | 园豆:122 (初学一级) | 2020-02-13 20:08

@断流: 唯有使用 EF ,用 LINQ 进行拼接

dudu | 园豆:29333 (高人七级) | 2020-02-13 20:12

@dudu: 也就是说dapper这个东西无法避免这个问题了呀,我看您用的是唯有这个词

AI大胜 | 园豆:122 (初学一级) | 2020-02-13 20:14

@断流: 是的,这是拼接 SQL 语句的问题,不在 Dapper 的管辖范围。

dudu | 园豆:29333 (高人七级) | 2020-02-13 20:17

@dudu: 嗯,有个印象了,我刚又简单搜了下,有篇博客说“在数据访问层,绝大多数采用存储过程访问数据,调用时以存储过程参数的方式访问,也会很好的防止注入式攻击。”。那我dapper配合存储过程是不是间接解决了

AI大胜 | 园豆:122 (初学一级) | 2020-02-13 20:19

@断流: 在存储过程中使用字符串拼接 SQL ,也是同样的问题

dudu | 园豆:29333 (高人七级) | 2020-02-13 22:11

@dudu: 嗯,感谢前辈的耐心指导,我周六会专门抽时间补习一下相关的知识

AI大胜 | 园豆:122 (初学一级) | 2020-02-13 22:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册