关于禁用关键字

禁用关键字是禁用参数里面的关键字吗。比如数据集里面的sql是这样的,对那应该是对参数abc 和 a 进行判断是否含有禁用关键字是吗

SELECT 销售员,sum(销量) as 销售总额 FROM 销量 where id = ${abc} and 

if (len(a)>0,"","t.base=" + a)

group by 销售员

情况:有遇到两张报表用的参数一样,然后禁用关键字里面有and,但是一张报表可以,另一张不可以。把禁用关键字and取消掉,不可以的报表也可以了。

FineReport Shaofeng 发布于 2020-10-22 15:04 (编辑于 2020-10-22 15:10)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
shirokoLv6资深互助
发布于2020-10-22 15:09

是的可以输入的参数值内不能有关键字,不然可以用于参数注入。

比如 where id='${id}'

你可以键入参数 1' or '1'='1 这样sql就变成 where id='1' or '1'='1' 导致可以看所有数据

而数据集内的公式${}内,不受限制

  • Shaofeng Shaofeng(提问者) 情况:有遇到两张报表用的参数一样,然后禁用关键字里面有and,但是一张报表可以,另一张不可以。把禁用关键字and取消掉,不可以的报表也可以了
    2020-10-22 15:11 
  • Shaofeng Shaofeng(提问者) 而数据集内的公式${}内,不受限制。这句话是什么意思
    2020-10-22 15:12 
  • shiroko shiroko 回复 Shaofeng(提问者) 估计不是这个问题,而且你上面给的sql语法都错了。。${}外居然有if和len这种帆软公式
    2020-10-22 15:13 
  • Shaofeng Shaofeng(提问者) 回复 shiroko 可以加qq,我想咨询一下
    2020-10-22 15:14 
  • shiroko shiroko 回复 Shaofeng(提问者) 很常见的为空选全部的模式${if(len(a)=0,\"\",\" AND a IN (\'\"+a+\"\')\")},这个里面有and啊,但是并没有什么问题啊,这个意思
    2020-10-22 15:15 
最佳回答
0
海拉鲁魔头Lv6中级互助
发布于2020-10-22 15:06(编辑于 2020-10-22 15:06)
最佳回答
0
ColdmanLv6高级互助
发布于2020-10-22 15:07

为了安全考虑,防止SQL注入

最佳回答
0
axingLv6专家互助
发布于2020-10-22 15:07
  • 5关注人数
  • 475浏览人数
  • 最后回答于:2020-10-22 15:10
    请选择关闭问题的原因
    确定 取消
    返回顶部