sql防注入

setTimeout(function() {

// 1. 获取单元格值

var I2 = String(_g().getCellValue("I2"));

// 3. 使用参数化查询防止SQL注入

var sqlExpressiona=FR.remoteEvaluate('=sql("伊莱瑞特主账套","SELECT remark FROM crm_linkman WHERE ID = \''+I2+'\' ORDER BY birthday DESC",1,1)');

var sqlExpressionb=FR.remoteEvaluate('=sql("伊莱瑞特主账套","SELECT phone FROM crm_linkman WHERE ID = \''+I2+'\' ORDER BY birthday DESC",1,1)');

alert(sqlExpressiona);

alert(sqlExpressionb);

// 4. 执行查询

var resulta = FR.remoteEvaluate(sqlExpressiona);

var resultb = FR.remoteEvaluate(sqlExpressionb);

alert(resulta);

alert(resultb);

// 5. 处理结果

_g().setCellValue("E4", resulta);

_g().setCellValue("Y4", resultb);

}, 1000);

以上js,通过sql执行,在开启安全防护的情况下,会报错“This formula is forbiddenSQL”,我的js需要怎么修改,在不关闭安全防护的情况下,也能用js正常执行sql语句

FineReport linl 发布于 4 天前
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
snrtuemcLv8专家互助
发布于4 天前

这个没办法

必须关闭才可以。。。

最佳回答
0
shirokoLv6资深互助
发布于4 天前

sql改到数据集里用value或者map公式去访问数据集

  • linl linl(提问者) 写不了数据集,因为我需要和单元格控件联动
    2025-08-08 09:40 
  • shiroko shiroko 回复 linl(提问者) 将一定范围内的数据都查出来,用公式筛选出特定数据
    2025-08-08 10:19 
最佳回答
0
Y时光Lv5见习互助
发布于4 天前(编辑于 4 天前

可以自己写一个自定义函数,封装一下查询SQL功能,在自定义函数里,传入三个参数,数据源,SQL,查询条件,然后返回结果,

这个可以使用JS调用,不需要关闭安全防护

//数据源
var dataSource='伊莱瑞特主账套';
//sql
var sql='SELECT remark FROM crm_linkman WHERE ID =? ORDER BY birthday DESC'
//过滤参数
var para=_g().getCellValue("I2")
//执行自定义函数getSQLResult
var sqlExpressiona=FR.remoteEvaluate('=getSQLResult('dataSource,sql,para')')
alert(sqlExpressiona);

  • 4关注人数
  • 40浏览人数
  • 最后回答于:4 天前
    请选择关闭问题的原因
    确定 取消
    返回顶部