mybatis动态传入表名和字段名问题

mybatis动态传入表名和字段名会有sql注入的危险,如果我指定返回类型是不是就可以解决这个问题?

3个回答

楼上说的差不多了,其实你可以先去看下$ 和# 的区别,第二,客户端输入也不是不可以用$ ,只是会设计到一些列的验证,常见的就是检查关键字,比如and ,insert 等等

wu_0916
竖心旁的情 我们领导也是这样说,实在不行就不用
接近 3 年之前 回复

指定返回类型和sql注入没有关系,返回类型表示这个sql都已经执行了。
动态传入表名和字段名,只要这个字段不是来自用户输入的话,就不会存在sql注入的问题。如果是客户端输入的话,就不能使用$ 符了

wu_0916
竖心旁的情 回复CHAS-许可: 不,我的意思是:我的本来要进行select操作,但动态传入字段时有人想搞事,把它传入insert或者delete语句。
接近 3 年之前 回复
hao18735044791
CHAS-许可 回复竖心旁的情: inster 为什么还要设置实体 况且他也直接返不给你啊 , 你返回个状态不就行了么。
接近 3 年之前 回复
wu_0916
竖心旁的情 我的意思是:比如我设置返回实体类,如果执行insert之类的返回结果不是实体类而报错,而防止这个问题,这样行吗?
接近 3 年之前 回复

如果能明确动态传入的数据类型,可以在SQL里强转。
如果根本就不能确定动态传入的数据类型,那么最好是在后台转成与数据库字段对应的数据类型,再调用SQL。
比较想要玩,就得游戏规则,这对后期系统维护也是好的!

wu_0916
竖心旁的情 测试的说如果有搞事的人就不好了,不是游戏规则的问题
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问